Python,csv 写入函数
我写了一个处理csv文件的函数,它应该能让你输入一个文件路径和要写入文件的字符串数量,并且可以指定用什么符号来分隔这些字符串。
def WRITE_csv(csv_path,*args):
with open(csv_path, "ab") as f:
csv_list=csv.writer(f,delimiter='|')
csv_string=""
for arg in args:
csv_string=csv_string+","+arg
csv_string=csv_string[1:]
csv_list.writerow([csv_string])
但是问题是,csv模块总是用,
来分隔,而不是我想要的|
。
另外,我还想用一行代码来替换:
csv_string=""
for arg in args:
csv_string=csv_string+","+arg
这段代码:
csv_string="".format(','.join(arg for arg in args))
可是它总是给我一个空字符串!
1 个回答
3
你把分隔符的值写成了一个字面量的字符串,里面只有一个列:
csv_list.writerow([csv_string])
所以,csv.writer()
根本没有理由去加|
这个分隔符,因为没有第二列需要分隔。你把整个字符串csv_string
当成一个只有一个值的列表传进去了,自然它就被看作是唯一的一列。这个模块不会再根据逗号把字符串拆分开。
把分隔符的工作留给写入器去做吧:
def WRITE_csv(csv_path, *args):
with open(csv_path, "ab") as f:
csv_list=csv.writer(f,delimiter='|')
csv_list.writerow(args)
换句话说,args
已经是正确的类型,可以直接用在csv.writerow()
这个调用里,你不需要在这里进行转换。