Jen*_*nny 6 python csv python-2.7
似乎已经有一些关于这个主题的内容(如何在 python 中用空格替换所有这些特殊字符?),但我一生都无法弄清楚这个简单的任务。
我有一个包含 75 列和近 4000 行的 .CSV 文件。我需要用“_”替换所有“特殊字符”($ # & * ect)并写入一个新文件。这是我到目前为止所拥有的:
import csv
input = open('C:/Temp/Data.csv', 'rb')
lines = csv.reader(input)
output = open('C:/Temp/Data_out1.csv', 'wb')
writer = csv.writer(output)
conversion = '-"/.$'
text = input.read()
newtext = '_'
for c in text:
newtext += '_' if c in conversion else c
writer.writerow(c)
input.close()
output.close()
Run Code Online (Sandbox Code Playgroud)
所有这些都成功地将所有内容作为单列写入输出文件,产生超过 65K 行。此外,特殊字符仍然存在!
对不起,多余的问题。先感谢您!
我可能会做类似的事情
import csv
with open("special.csv", "rb") as infile, open("repaired.csv", "wb") as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile)
conversion = set('_"/.$')
for row in reader:
newrow = [''.join('_' if c in conversion else c for c in entry) for entry in row]
writer.writerow(newrow)
Run Code Online (Sandbox Code Playgroud)
这变成了
$ cat special.csv
th$s,2.3/,will-be
fixed.,even.though,maybe
some,"shoul""dn't",be
Run Code Online (Sandbox Code Playgroud)
(请注意,我有一个引用值)到
$ cat repaired.csv
th_s,2_3_,will-be
fixed_,even_though,maybe
some,shoul_dn't,be
Run Code Online (Sandbox Code Playgroud)
现在,您的代码正在将整个文本读入一大行:
text = input.read()
Run Code Online (Sandbox Code Playgroud)
从一个角色开始_
:
newtext = '_'
Run Code Online (Sandbox Code Playgroud)
循环遍历 中的每个字符text
:
for c in text:
Run Code Online (Sandbox Code Playgroud)
将更正后的字符添加到newtext
(非常慢):
newtext += '_' if c in conversion else c
Run Code Online (Sandbox Code Playgroud)
然后将原始字符 (?) 作为一列写入新的 csv:
writer.writerow(c)
Run Code Online (Sandbox Code Playgroud)
..这不太可能是你想要的。:^)
归档时间: |
|
查看次数: |
18303 次 |
最近记录: |