繁体   English   中英

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

[英]Remove specific character from a csv file, and rewrite to a new file

我有一个VBA宏,每隔5分钟就会在整个纽约证券交易所提取股票数据。 这将拉动一切,从当前价格到盈利日期,再到市盈率以及其他指标。 我现在正在尝试设置cronjob,以运行一些python代码来清理csv数据,然后再将其导入到mySQL数据库中。 在设置cronjob之前,我需要先运行python代码...宝贝步骤:)。

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

下方有人对我的代码有任何建议吗? 我一次拉入csv文件的1行,并尝试将百分号(%)替换为空('')。 我已经尝试过在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() 

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

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

所以:

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)

感谢大家的帮助-以下是我收到结果的代码。 我使用了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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM