Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 在逗号上拆分字符串,但忽略双引号中的逗号?_Python_Regex_Csv_Split_Double Quotes - Fatal编程技术网

Python 在逗号上拆分字符串,但忽略双引号中的逗号?

Python 在逗号上拆分字符串,但忽略双引号中的逗号?,python,regex,csv,split,double-quotes,Python,Regex,Csv,Split,Double Quotes,我有一些输入,如下所示: A,B,C,"D12121",E,F,G,H,"I9,I8",J,K 逗号分隔的值可以是任意顺序。我想用逗号分隔字符串;但是,在双引号内的情况下,我需要它忽略逗号并去掉引号(如果可能的话)。因此,基本上,输出将是以下字符串列表: ['A', 'B', 'C', 'D12121', 'E', 'F', 'G', 'H', 'I9,I8', 'J', 'K'] 我已经看了一些其他的答案,我认为正则表达式最好,但我很难给出它们;它是一个逗号分隔的值文件,因此您应该使用。一

我有一些输入,如下所示:

A,B,C,"D12121",E,F,G,H,"I9,I8",J,K
逗号分隔的值可以是任意顺序。我想用逗号分隔字符串;但是,在双引号内的情况下,我需要它忽略逗号并去掉引号(如果可能的话)。因此,基本上,输出将是以下字符串列表:

['A', 'B', 'C', 'D12121', 'E', 'F', 'G', 'H', 'I9,I8', 'J', 'K']

我已经看了一些其他的答案,我认为正则表达式最好,但我很难给出它们;它是一个逗号分隔的值文件,因此您应该使用。一个简单的例子:

from csv import reader

# test
infile = ['A,B,C,"D12121",E,F,G,H,"I9,I8",J,K']
# real is probably like
# infile = open('filename', 'r')
# or use 'with open(...) as infile:' and indent the rest

for line in reader(infile):
    print line
# for the test input, prints
# ['A', 'B', 'C', 'D12121', 'E', 'F', 'G', 'H', 'I9,I8', 'J', 'K']

您是否考虑过在Python中使用该模块?我不确定这是否回答了这个问题。输出是否符合OP的要求?这里使用的是
reader
,或者应该如何使用?@heltonbiker是的,它给出了所需的输出。请看我答案的最后一行,或者自己运行代码并测试它
csv.reader
for
行中被使用——它从输入iterable中读取一行,并将其转换为单元格列表。@heltonbiker我对Python也有这种感觉——有时感觉你什么都没做,而且仍然有效:)如果你来这里寻找这个答案的正则表达式,请参见,您可以通过将
skipinitialspace=True
传递给
读取器来解决逗号后空格的问题。