【发布时间】:2017-04-25 01:48:07
【问题描述】:
目前我有一个想要操作的原始 CSV 文件。每行的 [3] 值,即 row[3] 包含一个字符串,其中包含字母“HKD”和一个数字。我正在尝试创建一个删除字母和空格的新 CSV 文件。出于某种原因,当我这样做时,最后约 60 行被切断了。我试图打印出所有行,它们在 python shell 中显示得很好,但不会打印到我的 CSV 上。我不确定为什么。 csv 输出文件在第 1931 行被截断,但它并没有完全截断整行,它只是在第一列中显示 1931,而不是其余数据。
索引 1931 附近的打印输出:
['1929', '8163 ', 'Merdeka Financial Services Group Ltd.', '154']
['1930', '8179 ', 'Food Idea Holdings Ltd.', '153']
['1931', '8079 ', 'Easy Repay Finance & Investment Ltd.', '150']
['1932', '8106 ', 'Zheda Lande Scitech Ltd. - H Shares', '149']
['1933', '1160 ', 'Grand Investment International Ltd.', '149']
['1934', '8363 ', 'SDM Group Holdings Ltd.', '148']
下面是我的代码:
import csv
csv_in = open('mcapdata.csv','rb')
writer = csv.writer(open('final-HK-MCap.csv','a'))
for row in csv.reader(csv_in):
row[3] = row[3].replace('HKD ','')
writer.writerow(row)
我不明白为什么它会在 shell 中很好地打印,但不会输出到我的 csv 文件中。我的 python 代码中是否存在导致这种情况的不良做法?
【问题讨论】:
-
我在数据中看不到任何明显的东西。最后你不要
.close()文件。如果您单独打开'final-HK-MCap.csv',将其传递给csv.writer(),然后在最后对文件执行.close(),这会改变什么吗?您的问题可能有什么问题,请参阅 here 使用with干净地打开和关闭文件。