首页 > 解决方案 > 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 组字母、数字和“-_”。

谢谢你的回答

标签: pythonregexstringsplit

解决方案


您可以使用

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']

推荐阅读