Python,csv 写入函数

1 投票
1 回答
1207 浏览
提问于 2025-04-18 15:40

我写了一个处理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()这个调用里,你不需要在这里进行转换。

撰写回答