Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从csv文件中读取包含逗号的列表作为列?_Python_List_Csv_Comma - Fatal编程技术网

Python 如何从csv文件中读取包含逗号的列表作为列?

Python 如何从csv文件中读取包含逗号的列表作为列?,python,list,csv,comma,Python,List,Csv,Comma,我想读取包含以下数据的csv文件: Input.csv- 10,[40000,1][50000,5][60000,14] 20,[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1] 30,[60000,4] 40,[40000,5][50000,14] if __name__ == "__main__": with open(inputfile, "r") as f: reader = csv.reade

我想读取包含以下数据的csv文件:

Input.csv-

 10,[40000,1][50000,5][60000,14]
 20,[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1]
 30,[60000,4]
 40,[40000,5][50000,14]
if __name__ == "__main__":

    with open(inputfile, "r") as f:
        reader = csv.reader(f,skipinitialspace=True)
        next(reader,None)
        for read in reader:
            no = read[0]
            splitted_record = read[1]          
            print splitted_record
[40000,1][50000,5][60000,14]
[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1]
[60000,4]
[40000,5][50000,14]
name_list = ['no','splitted_record']
file_name = 'temp/'+ no +'.csv'
if not os.path.exists(file_name):
    f = open(file_name, 'a')
    writer = csv.DictWriter(f,delimiter=',',fieldnames=name_list)
    writer.writeheader()
else:
    f = open(file_name, 'a')
    writer = csv.DictWriter(f,delimiter=',',fieldnames=name_list)
writer.writerow({'no':no,'splitted_record':splitted_record})
我想解析这个csv文件并逐行解析它。但是这些列表包含逗号(“,”),所以我没有得到正确的结果

程序代码-

 10,[40000,1][50000,5][60000,14]
 20,[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1]
 30,[60000,4]
 40,[40000,5][50000,14]
if __name__ == "__main__":

    with open(inputfile, "r") as f:
        reader = csv.reader(f,skipinitialspace=True)
        next(reader,None)
        for read in reader:
            no = read[0]
            splitted_record = read[1]          
            print splitted_record
[40000,1][50000,5][60000,14]
[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1]
[60000,4]
[40000,5][50000,14]
name_list = ['no','splitted_record']
file_name = 'temp/'+ no +'.csv'
if not os.path.exists(file_name):
    f = open(file_name, 'a')
    writer = csv.DictWriter(f,delimiter=',',fieldnames=name_list)
    writer.writeheader()
else:
    f = open(file_name, 'a')
    writer = csv.DictWriter(f,delimiter=',',fieldnames=name_list)
writer.writerow({'no':no,'splitted_record':splitted_record})
输出-

[40000
[40000
[60000
[40000
我可以理解read.csv方法读取每列的逗号。但是我怎么能把整个列表作为一列来阅读呢

预期产出-

 10,[40000,1][50000,5][60000,14]
 20,[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1]
 30,[60000,4]
 40,[40000,5][50000,14]
if __name__ == "__main__":

    with open(inputfile, "r") as f:
        reader = csv.reader(f,skipinitialspace=True)
        next(reader,None)
        for read in reader:
            no = read[0]
            splitted_record = read[1]          
            print splitted_record
[40000,1][50000,5][60000,14]
[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1]
[60000,4]
[40000,5][50000,14]
name_list = ['no','splitted_record']
file_name = 'temp/'+ no +'.csv'
if not os.path.exists(file_name):
    f = open(file_name, 'a')
    writer = csv.DictWriter(f,delimiter=',',fieldnames=name_list)
    writer.writeheader()
else:
    f = open(file_name, 'a')
    writer = csv.DictWriter(f,delimiter=',',fieldnames=name_list)
writer.writerow({'no':no,'splitted_record':splitted_record})
将内容写入其他文件-

 10,[40000,1][50000,5][60000,14]
 20,[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1]
 30,[60000,4]
 40,[40000,5][50000,14]
if __name__ == "__main__":

    with open(inputfile, "r") as f:
        reader = csv.reader(f,skipinitialspace=True)
        next(reader,None)
        for read in reader:
            no = read[0]
            splitted_record = read[1]          
            print splitted_record
[40000,1][50000,5][60000,14]
[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1]
[60000,4]
[40000,5][50000,14]
name_list = ['no','splitted_record']
file_name = 'temp/'+ no +'.csv'
if not os.path.exists(file_name):
    f = open(file_name, 'a')
    writer = csv.DictWriter(f,delimiter=',',fieldnames=name_list)
    writer.writeheader()
else:
    f = open(file_name, 'a')
    writer = csv.DictWriter(f,delimiter=',',fieldnames=name_list)
writer.writerow({'no':no,'splitted_record':splitted_record})
我怎样才能写出这个没有引号(“”)的拆分记录


谢谢大家的回复

您可以将这些项目连接在一起,因为您知道它是用逗号分割的

if __name__ == "__main__":

    with open(inputfile, "r") as f:
        reader = csv.reader(f,skipinitialspace=True)
        next(reader,None)
        for read in reader:
            no = read[0]
            splitted_record = ','.join(read[1:])          
            print splitted_record
输出

[40000,1][50000,5][60000,14]
[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1]
[60000,4]
[40000,5][50000,14]
---更新--- 数据为上述输出

with open(filepath,'wb') as f:
     w = csv.writer(f)
     for line in data:
         w.writerow([line])

你可以使用自己的方言,根据需要注册阅读。

为什么不打开
阅读
csv
@Moses Koledoye-这是一个csv文件,它的标题也没有,拆分了_记录,所以我用csv.reader.read逐行阅读,并用常规的expression@galaxyan-工作文件,但在将此记录写入另一个文件时遇到双字符(“”)。我可以在写入时删除它吗?@kit在加入后,数据会变成字符串,所以当您写入文件时,文件上会有“”。我想知道您是否要将字符串更改为列表列表。@galaxyan-我不想将字符串更改为列表列表,我只想保留输出文件,因为它类似于没有引号的[40000,1][50000,5][60000,14],而不是带引号的“[40000,1][50000,5][60000,14]”(“)@galaxyan不是“cote”而是“quote”@galaxyan您是如何编写在输出文件中显示引号的?