Python解析csv文件 - 用冒号替换逗号

drb*_*sen 10 python csv parsing

我怀疑这是一个常见的问题,但我似乎找不到答案.我试图从csv文件中删除所有逗号并用冒号替换它们.我通常会使用sed或vi,但我需要使用纯粹的python实现.这是我到目前为止提出的:

import csv

with open("temp.csv", mode="rU") as infile:
    reader = csv.reader(infile, dialect="excel")    
    with open("temp2.txt", mode="w") as outfile:
        writer = csv.writer(outfile)
        for rows in reader:
            for parsed_item in rows:
                parsed_item = rows.replace(',', ':') # I can't do this with a list!
                writer.writerow(parsed_item)
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决这个问题吗?在此先感谢您的帮助.

G G*_*III 24

答案比你想象的要容易.您只需要为以下内容设置分隔符csv.writer:

import csv

row = #your data

with open("temp.csv", mode="rU") as infile:
    reader = csv.reader(infile, dialect="excel")    
    with open("temp2.txt", mode="w") as outfile:
        writer = csv.writer(outfile, delimiter=':')
        writer.writerows(rows)
Run Code Online (Sandbox Code Playgroud)

你试图替换,,:因为行已经被处理了,所以不会做任何事情csv.reader.

  • ...这里没有定义行.我不确定它应该引用什么. (18认同)
  • 将writer.writerows(rows)替换为writer.writerows(list(reader)),甚至更好的writer.writerows(reader)。 (2认同)

Syl*_*are 5

如果要读取带有逗号分隔符的csv并将其写入带有分号分隔符的另一个文件中。我认为更简单的方法是:

reader = csv.reader(open("input.csv", "rU"), delimiter=',')
writer = csv.writer(open("output.csv", 'w'), delimiter=';')
writer.writerows(reader)
Run Code Online (Sandbox Code Playgroud)

我发现此示例比使用容易理解得多with open(...)。另外,如果您使用逗号和分号作为分隔符来处理文件。您可以在读取文件之前使用csv文件的嗅探器检测使用哪个定界符(链接中的示例)。

另外,如果要重写同一文件,请检查此stackoverflow答案