python - 如何知道哪些分隔符分隔了拆分中的元素?
问题描述
在 Python 中,如何使用多个分隔符拆分字符串并知道使用哪个分隔符分隔任意两个元素?
例如,在以下示例中取自这篇文章:
>>> a='Beautiful, is; better*than\nugly'
>>> import re
>>> re.split('; |, |\*|\n',a)
['Beautiful', 'is', 'better', 'than', 'ugly']
如何确定分隔“是”和“更好”的分隔符是“;'?
awk
有一个有用的方法来完成此操作patsplit(string, array [, fieldpat [, seps ] ])
,其中seps
是一个数组,其中包含分隔两个元素的分隔符。在这种情况下,seps[1]
将是',',seps[2]
将是'; ',seps[3]
将是 '*',并且seps[4]
将是 '\n'。我没有看到类似的功能re.split
。
解决方案
您可以捕获正则表达式模式以获取输出中的分隔符:
In [16]: a = 'Beautiful, is; better*than\nugly'
In [17]: re.split(r'(; |, |\*|\n)', a)
Out[17]: ['Beautiful', ', ', 'is', '; ', 'better', '*', 'than', '\n', 'ugly']
然后您可以使用通常的索引符号获得分隔符。
现在,如果您想要吐出的单词,请从索引 0 开始切片,步长为 2:
In [18]: re.split(r'(; |, |\*|\n)', a)[::2]
Out[18]: ['Beautiful', 'is', 'better', 'than', 'ugly']
要获取分隔符,请从索引 1 开始切片,步长为 2:
In [19]: re.split(r'(; |, |\*|\n)', a)[1::2]
Out[19]: [', ', '; ', '*', '\n']
推荐阅读
- mysql - LIKE 更改结果的不同参数顺序
- google-api - 用于服务帐户的 Google Drive Api。创建文件时出错
- android - 如果互联网不可用,为什么 Retrofit 等到超时才给 onFailure 回调?
- javascript - 如何在 javascript 中迭代数组对象?
- azure - 无法将 PFX 添加到 Azure Key Vault
- azure - 如何在 Azure 门户中从我的 Linux VM 获取指标
- confluence - 迁移到 Confluence - 在 Confluence 中更新作者字段和创建或修改的字段
- javascript - 性能比较:Array of Array vs Array of Object
- sql - 如何使用行号对这个 BigQuery 查询进行分页?
- python - 使用 VS Code Python 扩展登录到受密码保护的远程 Jupyter URI(URI 中没有令牌)