如何在python中使用csv分隔符

如何在python中使用csv分隔符,python,csv,delimiter,Python,Csv,Delimiter,我很难弄清楚如何在Python中使用csv.writer的分隔符。 我有一个csv文件,其中由逗号分隔的字符串位于单个单元格中,我需要在每个单元格中包含每个单词。例如: 100 , 2559 ,,Main, St,LEOMA,LEOMA,498,498, AK,AK 140 , 425 ,,Main, St,LEOMA,LEOMA,498,498, AK,AK 100 , 599 ,,Main, St,LEOMA,LEOMA,498,498, AK,AK 应该

我很难弄清楚如何在Python中使用csv.writer的分隔符。 我有一个csv文件,其中由逗号分隔的字符串位于单个单元格中,我需要在每个单元格中包含每个单词。例如:

   100 , 2559   ,,Main, St,LEOMA,LEOMA,498,498, AK,AK
   140 , 425    ,,Main, St,LEOMA,LEOMA,498,498, AK,AK
   100 , 599    ,,Main, St,LEOMA,LEOMA,498,498, AK,AK
应该是

   100  2559        Main    St  LEOMA   LEOMA   498 498 AK  AK
   140  425     Main    St  LEOMA   LEOMA   498 498 AK  AK
   100  599     Main    St  LEOMA   LEOMA   498 498 AK  AK
(单个单元格中的每个单词)

我试过:

import csv
workingdir = "C:\Mer\Ven\sample"
csvfile = workingdir+"\test3.csv"
f=open(csvfile,'wb')

csv.writer(f, delimiter =' ',quotechar =',',quoting=csv.QUOTE_MINIMAL)

您的代码正在清空您的文件:

import csv
workingdir = "C:\Mer\Ven\sample"
csvfile = workingdir+"\test3.csv"
f=open(csvfile,'wb') # opens file for writing (erases contents)
csv.writer(f, delimiter =' ',quotechar =',',quoting=csv.QUOTE_MINIMAL)
如果要在中读取文件,则需要使用csv.reader并打开文件进行读取

import csv
workingdir = "C:\Mer\Ven\sample"
csvfile = workingdir+"\test3.csv"
f=open(csvfile,'rb') # opens file for reading
reader = csv.reader(f)
for line in reader:
    print line

如果您想用不同的分隔符将其写回一个新文件,您可以创建一个新文件并指定这些分隔符,然后写出每一行(而不是打印元组)。

好的,下面是我从您的问题中理解的内容。您正在从python编写csv文件,但当您将该文件打开到其他应用程序(如excel或open office)时,它们会在一个单元格中显示完整的行,而不是在单个单元格中显示每个单词。我是对的

如果我是那么请试试这个

import csv

with open(r"C:\\test.csv", "wb") as csv_file:
    writer = csv.writer(csv_file, delimiter =",",quoting=csv.QUOTE_MINIMAL)
    writer.writerow(["a","b"])
您必须使用自定义分隔符设置
分隔符=“,”

CSV文件 默认情况下,逗号用作CSV文件中的分隔符。但是,某些CSV文件可以使用逗号以外的分隔符。很少有流行的是
|
\t

导入csv
数据列表=[“序号”、“名称”、“贡献”],
[1,“Linus Torvalds”,“Linux内核”],
[2,“Tim Berners Lee”,“万维网”],
[3,“Guido van Rossum”,“Python编程”]]
打开('innovators.csv','w',换行符='')作为文件:
writer=csv.writer(文件,分隔符=“|”)
writer.writerows(数据列表)
输出:

SN | Name |贡献
1 | Linus Torvalds | Linux内核
2 | Tim Berners Lee |万维网
3 | Guido van Rossum | Python编程
写带有引号的CSV文件
导入csv
行列表=[[“序号”、“名称”、“贡献”],
[1,“Linus Torvalds”,“Linux内核”],
[2,“Tim Berners Lee”,“万维网”],
[3,“Guido van Rossum”,“Python编程”]]
打开('innovators.csv','w',换行符='')作为文件:
writer=csv.writer(文件,quoting=csv.QUOTE_非数字,分隔符=“;”)
writer.writerows(行列表)
输出:

“SN”;“姓名”;“贡献”
1.“莱纳斯·托瓦尔兹”;“Linux内核”
2.“蒂姆·伯纳斯·李”;“万维网”
3.“Guido van Rossum”;“Python编程”
如您所见,我们已将
csv.QUOTE_NONNUMERIC
传递给
quoting
参数。它是由
csv
模块定义的常量

csv.QUOTE\u non numeric
指定应在非数值项周围添加引号的
writer
对象

有3个其他预定义常量可以传递给
quoting
参数:

  • csv.QUOTE\u ALL
    -指定
    writer
    对象来写入csv文件,并在所有条目周围加引号
  • csv.QUOTE_MINIMAL
    -指定
    writer
    对象仅引用包含特殊字符(分隔符、引号或行终止符中的任何字符)的字段
  • csv.QUOTE\u NONE
    -指定不应引用任何条目的
    writer
    对象。它是默认值
导入csv
行列表=[[“序号”、“名称”、“贡献”],
[1,“Linus Torvalds”,“Linux内核”],
[2,“Tim Berners Lee”,“万维网”],
[3,“Guido van Rossum”,“Python编程”]]
打开('innovators.csv','w',换行符='')作为文件:
writer=csv.writer(文件,quoting=csv.QUOTE_非数字,
分隔符=“;”,引号=“*”)
writer.writerows(行列表)
输出:

*SN**姓名**贡献*
1;*李纳斯·托瓦尔兹**Linux内核*
2;*蒂姆·伯纳斯·李**万维网*
3;*Guido van Rossum**Python编程*

在这里,我们可以看到,
quotechar='*'
参数指示
writer
对象将
*
用作所有非数字值的引号。

为什么在句子中已经有空格的情况下,还将空格用作引号字符?我必须承认,我对你的问题感到困惑;你说用逗号写CSV,但你想用空格来代替吗?你能给我们看一个你想写的行(python列表)的例子吗?我不确定我应该在quotechar中写什么。所以我把它留空,你把它设为空格。你没有留下空白。将其保留为默认的
或设置
quoting=csv。QUOTE_NONE
以禁用quoting。我不认为你的问题不在于quoting。我有一堆作为csv文件生成的地址,但格式为ex:15,29,Main St,city,country,zip,state。所有这些都在单个单元格中。我想将它们(每个单词)分开在单个单元格中。我说得清楚了吗?我试过了,它的作用是在一个单元格中打印每个字符,而不是用“,”分隔的整个数字或单词。您能指出其中的确切内容吗。writerow()?writerow需要一个列表…如果你给它传递一个字符串,它将使每个字符都成为自己的单元格,这听起来像是它在做什么。感谢你的响应。我尝试了这种方法。我创建了一个空列表,在读取文件1时附加了行的值,并试图在文件2中写入行,但当我这样做时,文件2变成了一个重复文件类别1。您能举例说明包含分隔符的语句是如何编写的吗?您可以将编写器设置为与读取器不同的分隔符,这样您就可以用不同的方言编写文件。我尝试了几种组合,幸运的是其中一种组合有效。感谢您的输入。在我的情况下,我到底要写什么在“a”、“b”的位置?我有数千条记录。问题中提到的上述只是一个小样本子集。