我无法弄清楚如何在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)
答案 0 :(得分:16)
您的代码正在删除您的文件:
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
如果要将其写回具有不同分隔符的新文件,可以创建一个新文件并指定这些分隔符并写出每一行(而不是打印元组)。
答案 1 :(得分:3)
如果我那么请试试这个,
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"])
您必须设置delimiter = ","
答案 2 :(得分:0)
默认情况下,逗号用作 CSV 文件中的分隔符。但是,某些 CSV 文件可以使用逗号以外的分隔符。很少有流行的 |
和 \t
。
import csv
data_list = [["SN", "Name", "Contribution"],
[1, "Linus Torvalds", "Linux Kernel"],
[2, "Tim Berners-Lee", "World Wide Web"],
[3, "Guido van Rossum", "Python Programming"]]
with open('innovators.csv', 'w', newline='') as file:
writer = csv.writer(file, delimiter='|')
writer.writerows(data_list)
输出:
SN|Name|Contribution
1|Linus Torvalds|Linux Kernel
2|Tim Berners-Lee|World Wide Web
3|Guido van Rossum|Python Programming
import csv
row_list = [["SN", "Name", "Contribution"],
[1, "Linus Torvalds", "Linux Kernel"],
[2, "Tim Berners-Lee", "World Wide Web"],
[3, "Guido van Rossum", "Python Programming"]]
with open('innovators.csv', 'w', newline='') as file:
writer = csv.writer(file, quoting=csv.QUOTE_NONNUMERIC, delimiter=';')
writer.writerows(row_list)
输出:
"SN";"Name";"Contribution"
1;"Linus Torvalds";"Linux Kernel"
2;"Tim Berners-Lee";"World Wide Web"
3;"Guido van Rossum";"Python Programming"
如您所见,我们已将 csv.QUOTE_NONNUMERIC
传递给 quoting
参数。它是由 csv
模块定义的常量。
csv.QUOTE_NONNUMERIC
指定应该在非数字条目周围添加引号的 writer
对象。
您可以将其他 3 个预定义常量传递给 quoting
参数:
csv.QUOTE_ALL
- 指定 writer
对象写入 CSV 文件,并在所有条目周围加上引号。csv.QUOTE_MINIMAL
- 指定 writer
对象仅引用包含特殊字符(分隔符、quotechar 或行终止符中的任何字符)的字段csv.QUOTE_NONE
- 指定不应引用任何条目的 writer
对象。这是默认值。import csv
row_list = [["SN", "Name", "Contribution"],
[1, "Linus Torvalds", "Linux Kernel"],
[2, "Tim Berners-Lee", "World Wide Web"],
[3, "Guido van Rossum", "Python Programming"]]
with open('innovators.csv', 'w', newline='') as file:
writer = csv.writer(file, quoting=csv.QUOTE_NONNUMERIC,
delimiter=';', quotechar='*')
writer.writerows(row_list)
输出:
*SN*;*Name*;*Contribution*
1;*Linus Torvalds*;*Linux Kernel*
2;*Tim Berners-Lee*;*World Wide Web*
3;*Guido van Rossum*;*Python Programming*
在这里,我们可以看到 quotechar='*'
参数指示 writer
对象使用 *
作为所有非数字值的引用。