在python中写入csv时如何转义分号

时间:2018-04-12 05:01:37

标签: python csv escaping

我在python中有一个列表列表,表示要在csv文件中写入的数据。我的代码是:

for n, d, p in zip(names, dates, posts):
        writer.writerow([i, n, d, p])

但是,帖子中的某些字符串包含分号,这会在csv中创建新的单元格。我在网上看过并试过

  1. 设置quoting = csv.QUOTE_ALL
  2. 将每个帖子字符串包装在双引号内
  3. 用双引号括起分号
  4. 使用普通的python write代替csv.writer
  5. 到目前为止,没有任何工作。任何帮助,我发现的逃避逗号的每个在线答案涉及(1)或(2)这对我不起作用。请帮忙!

    编辑:这是我的意思的一个例子

    当我写行['a','b','c','d; e']时,d和e会被放入不同的单元格中,例如:

    a | b | c | d | e
    

    与我想要的相反,这是:

    a | b | c | d;e
    

3 个答案:

答案 0 :(得分:3)

我会建议您使用pandas将数据转换为CSV,因为它更容易,您也不需要关心处理字符。

>>> arr = [{"a":1,"b":2,"c":3},{"a":2,"b":3,"c":4}]
>>> dataFrame = pd.DataFrame(arr)
>>> dataFrame
   a  b  c
0  1  2  3
1  2  3  4
>>> dataFrame.to_csv("test.csv",index = 0)

答案 1 :(得分:0)

您可以使用tab作为分隔符。

您可以使用pandascsv编写文件并稍后打开,将分隔符设置为“\t”

它适用于在Excel或类似程序中打开。

使用csv进行写作的示例:

import csv

with open(<filename>, "w") as file:
    writer = csv.writer(file, delimiter="\t")

使用csv进行阅读的示例:

import csv

with open(<filename>, "r") as file:
    reader = csv.reader(file, delimiter="\t")

答案 2 :(得分:0)

您正在使用CSV查看程序的任何程序都可能有问题。我遇到了同样的问题,这是因为我在电子表格软件中选中了一个复选框,以用逗号和分号分隔。