我正在解析一个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也没有类似的情况。 感谢任何可以帮助我的指针。
答案 0 :(得分:4)
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']
答案 1 :(得分:3)
尝试这个简单的方法:
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
首先用'分隔,然后删除所有空格和单引号