python - Python:用数字、字母和-_分割字符串
问题描述
假设我有一个这样的字符串
string = 'rename_file_1122--23-_12'
有没有办法这样拆分
parts = ['rename','_','file','_','1122','--','23','-_','12']
我尝试使用正则表达式,但它不起作用
import re
name_parts = re.findall('\d+|\D+|\w+|\W+', string)
结果是:
['rename_file_', '1122', '--', '23', '-_', '12']
########## 第二部分
如果我有这样的字符串:
string2 = 'Hello_-Marco5__-'
我需要使用什么条件才能获得:['Hello','_-','Marco','5','__-']
。我的目标是拆分字符串 y 组字母、数字和“-_”。
谢谢你的回答
解决方案
您可以使用
re.findall(r'[^\W_]+|[\W_]+', string)
请参阅正则表达式演示。
正则表达式详细信息:
[^\W_]+
- 一个或多个非单词和字符以外的_
字符(因此,一个或多个字母或数字)|
- 或者[\W_]+
- 一个或多个非单词和/或_
字符。
查看Python 演示:
import re
string = 'rename_file_1122--23-_12'
name_parts = re.findall(r'[^\W_]+|[\W_]+', string)
print(name_parts)
# => ['rename', '_', 'file', '_', '1122', '--', '23', '-_', '12']
推荐阅读
- c++ - 如何让 c++ 中的 ioctl 只管理鼠标的 4 个按钮中的 2 个?
- azure-ad-b2c - 资源所有者密码凭证流是否与来自外部身份提供者的帐户一起使用
- cordova - Ionic 4 - ionic cordova android build 上的错误“源和目标不能相同”
- javascript - 获取变量的 JSON 问题
- javascript - 如何将 react-redux 项目导出为 node_module
- ruby - 在 s3 视频上传上触发 Lambda?
- avro - 空手道模拟是否支持 AVRO 对象测试?
- excel - 如何在VBA中删除带有条件的重复行
- javascript - 将所需数据转换为具有嵌套对象的对象,其中包含键和值
- javascript - 我如何为这个庞大的对象列表中的每个对象添加额外的键和值