Skip to main content
 首页 » 编程设计

python之如何基于单引号分隔项目之i.n. ['a' ,'b' ,'x,d' ] => a b 'x,d'

2025年05月04日11Terrylee

我正在解析一个 csv 文件并提取所有数据并根据引号将它们分开。 为简单起见,我从该文件中随机取一行

输入:

line = "'abc', 'sxy', 'lmo,por','zz'" 

期望的输出:

abc 
sxy 
'lmo,por' 
zz 

所需输出中的第 3 行是我对代码感到厌烦的地方。如果我执行 replace("'","") 操作,那么我将丢失所有引号并分离出来。 我不确定如何在不丢失单引号的情况下合并第 3 行的值,而我需要为其他人去除单引号 是否有用于此的 python 内置字符串函数。

我不确定谁可以编写正则表达式,因为我对正则表达式解析还很陌生。

到目前为止我的代码:

line = "'abc', 'sxy', 'lmo,por','zz'" 
 
def parse(line): 
    line = line.replace("'","") 
    a = line.split(',') 
    for word in a: 
        l.append(word) 
    print(l) 

我知道这很微不足道,但我无法解决它。 SO也没有类似的情况。 感谢任何可以帮助我的指点。

请您参考如下方法:

python csv 包具有一个 quotechar 参数,我认为它会满足您的需要。作为一般的经验法则,不要通过自己解析所有内容来处理 csv 文档,并且不要使用正则表达式。

看看 documentation和一个 relative discussion

这应该可以解决问题(我想您必须解析多行)。

lines = """ 'abc', 'sxy', 'lmo,por','zz' 
'some,thing', 'some', thing""".splitlines() 
 
for l in  csv.reader(lines, quotechar="'", delimiter=',',  
                    quoting=csv.QUOTE_ALL, skipinitialspace=True): 
    print(l) 
 
# ['abc', 'sxy', 'lmo,por', 'zz'] 
# ['some,thing', 'some', 'thing']