1

我正在尝试清理 CSV 文件的格式以便将其导入数据库,并且我正在使用以下内容对其进行编辑:

f1 = open('visit_summary.csv', 'r')
f2 = open('clinics.csv', 'w')

for line in f1:
    f2.write(line.replace('Calendar: ', ''))

f1.close()
f2.close()

如果只需要进行 1 次编辑,这可以正常工作,但是,我必须重复此代码 19 次才能进行所需的所有更改;多次打开和关闭每个文件并具有多个占位符字段,以便用于第一次和最后一次编辑之间的中间步骤)。有没有更简单的方法来做到这一点?我尝试添加更多 "f2.write(line.replace"... 行,但是,这会创建一个包含重复行的最终文件,每行只有 1 次编辑。我想我看到了我的问题(我正在多次编写每一行每次编辑),但是,我似乎找不到解决方案。我对 python 很陌生,并且是自学的,所以任何帮助或更好的资源的方向将不胜感激。

4

3 回答 3

2

没有理由你不能在写之前对它做很多事情:

with open('visit_summary.csv', 'r') as f1, open('clinics.csv', 'w') as f2:
    for line in f1:
        line = line.replace('Calendar: ', '')
        line = line.replace('Something else', '')
        f2.write(line)

(我也用声明替换了open, )closewith

于 2013-05-08T22:11:38.590 回答
1
f1 = open('visit_summary.csv', 'r')
f2 = open('clinics.csv', 'w')

for line in f1:
    f2.write(line.replace('Calendar: ', '').replace('String2', '').replace('String3', ''))

f1.close()
f2.close()

这行得通吗?虽然我不认为它非常“pythonic”。在这种情况下,您必须小心订购!

于 2013-05-08T22:09:34.357 回答
0
import csv
file1 = csv.DictReader(open('visit_summary.csv', 'r'))
output =[]
for line in file1:
    row= {}
    row['calender'] = line.replace('Calender:','')

row['string'] = line.replace('string','')
    output.append(row)

file = csv.DictReader(open('clinics.csv', 'w'))
fileWriter = csv.writer(file , delimiter=",",quotechar='"', quoting=csv.QUOTE_MINIMAL)

Header = ['something' , 'something']
fileWriter.writerow(Header)
for x in output:
temp = [x['something'],x['something']]
fileWriter.writerow(temp)
file.close()
于 2013-05-09T09:41:29.300 回答