从csv文件中删除特定字符,然后重写为新文件

时间:2013-06-18 18:47:29

标签: python csv for-loop output writer

我有一个VBA宏在整个纽约证券交易所每5分钟拉一次股票数据。这将从当前价格到收益日期,到p / e等所有指标。我现在正在尝试设置一个cronjob来运行一个小的python代码来清理csv数据,然后再导入到mySQL数据库中。在我设置cronjob之前,我需要让python代码正常工作......宝贝步骤:)。

几年前我离开了python,但我想在这里再次使用它。经过一些研究,经过审查,在2.6中他们删除了许多字符串方法,然后是3.1中的maketrans()参数。我正在运行python 3.3。

有没有人对我的代码有任何建议?我一次拉入1行csv文件,并试图替换百分号(%),没有任何东西('')。我尝试在if语句中使用replace()参数,但这也不起作用。很多,非常感谢提前。

谢谢,

import csv
import string

input_file = open('StockData.csv', 'r')
output_file = open('Output.csv', 'w')
data = csv.reader(input_file)
writer = csv.writer(output_file)
specials = '%'

for line in data:
    trans = s.makestrans(specials, ''*len(specials))
    new_line = line.translate(trans)
    writer.writerow(new_line)

input_file.close()
output_file.close() 

2 个答案:

答案 0 :(得分:4)

我知道这是一个旧的,但我一直在努力解决类似的问题。

您可以使用列表推导,而不是将每一行转换为字符串,以便您可以使用替换。

所以:

for line in data:
    line = str(line)
    new_line = str.replace(line,specials,'')
    writer.writerow(new_line.split(','))

变为:

for line in data:
    line = [value.replace(specials, '') for value in line]
    writer.writerow(line)

答案 1 :(得分:1)

感谢大家的帮助 - 下面是我收到结果的代码。我使用了help(string.split),以便在替换后让我的数据出现在正确的列中。此外,关键是使一行成为一个字符串,以便进行替换。

import csv
import string

input_file = open('DesktopData.csv', 'r')
output_file = open('fixformat.csv', 'w')
data = csv.reader(input_file)
writer = csv.writer(output_file,quoting=csv.QUOTE_ALL)# dialect='excel')
specials = '%'

for line in data:
    line = str(line)
    new_line = str.replace(line,specials,'')
    writer.writerow(new_line.split(','))

input_file.close()
output_file.close()