2

我有一个 VBA 宏,每 5 分钟在整个纽约证券交易所提取股票数据。这包含了从当前价格、收益日期到市盈率等其他指标的所有内容。我现在正在尝试设置一个 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() 
4

2 回答 2

5

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

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

所以:

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)
于 2016-01-28T13:21:45.673 回答
1

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

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()
于 2013-06-19T03:19:06.797 回答