gpt4 book ai didi

Python csv阅读器忽略作为字符串一部分的双引号内的分隔符

转载 作者:太空宇宙 更新时间:2023-11-03 20:14:21 24 4
gpt4 key购买 nike

如果我有一个字符串

s = 'some data in here, some more data in here, 0, a string|12345|"today,tomorrow-nextweek 6a-10a"|1234567, 2, 3.4, data string, string'

如何读取它才能得到这样的结果?

['some data in here',
'some more data in here',
'0',
'a string|12345|"today,tomorrow-nextweek 6a-10a"|1234567',
'2',
'3.4',
'data string',
'string']

元素 'a string|12345|"today,tomorrow-nextweek 6a-10a"|1234567' 不断被 csv 读取器分成两个元素,因为其中存在带有另一个分隔符的双引号分隔符之间。我不确定是否有办法使用 csv.reader 解决此问题。我已经在字符串上尝试了以下方法,但没有成功

next(csv.reader(StringIO(s), quoting=csv.QUOTE_ALL, skipinitialspace=True))

next(csv.reader(StringIO(s), skipinitialspace=True))

next(csv.reader(StringIO(s), doublequote=True, quoting=csv.QUOTE_NONE, escapechar='\\', skipinitialspace=True))

最佳答案

对于 csv 模块支持的方言来说,这是不可能的。您可以改为将 re.findall 与替换模式一起使用,该替换模式匹配双引号字符串或非逗号字符的重复,并使用前面的正向先行模式来确保匹配以非- 空白:

import re
re.findall(r'(?=\S)(?:"[^"]*"|[^,])+', s)

演示:https://repl.it/@blhsing/SplendidRichPyramid

关于Python csv阅读器忽略作为字符串一部分的双引号内的分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58551765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com