我正在解析一个 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']
