如何基于单引号字符分隔项目 - 即 ['a','b','x,d'] => ab 'x,d'?

我正在解析一个 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也没有类似的情况。欣赏任何指针,可以帮助我。


万千封印
浏览 228回答 2
2回答

慕后森

pythoncsv包具有一个quotechar参数,我认为它可以满足您的需求。作为一般经验法则,不要csv通过自己解析所有内容来处理文档,也不要使用正则表达式。查看文档和相关讨论这应该可以解决问题(我想您必须解析多行)。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']

四季花海

试试这个简单的:line = "'abc', 'sxy', 'lmo,por','zz'"def parse(line):    li = []    lines = line.split("',")    for line in lines:        word = line.replace("'", "").strip()        print (word)        li.append(word)    return li首先由 ' 分割,然后删除所有空格和单引号
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python