Python - 如何在拆分字符串时忽略双引号中的空格? [复制]
Posted
技术标签:
【中文标题】Python - 如何在拆分字符串时忽略双引号中的空格? [复制]【英文标题】:Python - How to ignore white spaces in double quotes while splitting a string? [duplicate] 【发布时间】:2014-03-05 04:01:41 【问题描述】:我的数据如下
string = ' streptococcus 7120 "File being analysed" rd873 '
我尝试使用n=string.split()
拆分行,结果如下:
[streptococcus,7120,File,being,analysed,rd873]
我想拆分字符串,忽略“”中的空格
# output expected :
[streptococcus,7120,File being analysed,rd873]
【问题讨论】:
您是否可能有嵌套引号(例如"File name "foo" being analyzed"
)?
另见this。
【参考方案1】:
将re.findall
与合适的正则表达式一起使用。我不确定您的错误案例是什么样的(如果引号是奇数怎么办?),但是:
filter(None, it.chain(*re.findall(r'"([^"]*?)"|(\S+)', ' streptococcus 7120 "File being analysed" rd873 "hello!" hi')))
> ['streptococcus',
'7120',
'File being analysed',
'rd873',
'hello!',
'hi']
看起来不错。
【讨论】:
您是否在 OP 的示例字符串上对此进行了测试?它不会做你想让它做的事情。 (好吧,现在它在你编辑之后就可以了。)【参考方案2】:你想要shlex.split
,它会用引号给你想要的行为。
import shlex
string = ' streptococcus 7120 "File being analysed" rd873 '
items = shlex.split(string)
这不会去除嵌入在字符串中的额外空格,但您可以通过列表推导来做到这一点:
items = [" ".join(x.split()) for x in shlex.split(string)]
看,妈妈,没有正则表达式!
【讨论】:
非常感谢 除了使用 shlex 还有其他方法吗 嗯,有很多方法可以做任何事情...... Shlex 也抓取单引号字符串,我不确定这是否是有意的。以上是关于Python - 如何在拆分字符串时忽略双引号中的空格? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 将 Google Cloud Storage 中的数据加载到 BigQuery 时,如何强制忽略双引号?