gpt4 book ai didi

python - 我的 CSV 编写器代码在字符之间写入分隔符而不是字符串

转载 作者:行者123 更新时间:2023-12-01 09:27:12 25 4
gpt4 key购买 nike

我已经编写了写入 CSV 文件并从另一个文件读取的代码。我想从输入文件中写出特定的列,因此我将它们附加到列表中,然后用逗号分隔它们并将它们添加到行中,但输出文件显示各个单词的字符也用逗号分隔。我只想分隔单词,而不是字符。

import csv
def csv_reader(file,path):
with open(path, 'w') as f1, open(file, 'r') as f2:
write = csv.writer(f1, delimiter=',')
read = csv.reader((line.replace('\0','') for line in f2), delimiter="\t")
i=1
for row in read:
if(len(row)==0):
continue
if(row[3]=="Trade"):
continue
else:
if(row[6]==""):
r = [row[0],row[0],'A',row[8],row[9],row[0]]
line = ','.join(r)
print(line)
write.writerow(line)
else:
r = [row[0],row[0],'B',row[6],row[7],row[0]]
line = ','.join(r)
print(line)
write.writerow(line)
if __name__ == "__main__":
path = "sales.csv"
csv_path = "FlowEdge-TRTH-Time_Sales.csv"
csv_reader(csv_path,path)

这显示输出如下:

    0,7,0,0,4,5,0,0,0,0,C,8,.,H,K,",",0,7,0,0,4,5,0,0,0,0,C,8,.,H,K,",",B,",",5,.,7,",",4,",",0,7,0,0,4,5,0,0,0,0,C,8,.,H,K

虽然它应该是这样的:

    0700450000C8.HK,0700450000C8.HK,B,5.7,4,0700450000C8.HK

当我进行以下修改时

   write.writerow([line])

它在 Excel 文件的一列中显示完整的字符串,这意味着只有一列,而我想要 6 列。

最佳答案

问题出在这里:

line=','.join(r)
print(line)
write.writerow(line)

writerow 方法需要一个列列表。它将在列之间添加逗号(并引用或转义任何需要它的内容等)。

但是你没有给它一个列列表;你给它一个字符串。这就是 ','.join(r) 的作用:将列列表转换为单个逗号分隔的字符串。

当您为 writerow 提供一个字符串(而不是字符串列表)时,它会将字符串视为字符序列。 (这不是 csv 特有的;在 Python 中,字符串字符序列。)因此它将每个字符视为一列,并在它们之间添加逗号。

只需这样做:

write.writerow(r)

关于python - 我的 CSV 编写器代码在字符之间写入分隔符而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50286190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com