gpt4 book ai didi

Python : Splitting a string by numbers, 字母和 -_

转载 作者:行者123 更新时间:2023-12-03 18:39:44 25 4
gpt4 key购买 nike

假设我有一个这样的字符串

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 组字母、数字和“-_”。
谢谢你的回答

最佳答案

或者,您可以使用 groupby 中的 itertools :

from itertools import groupby

string = 'rename_file_1122--23-_12'

result = [''.join(value) for key, value in groupby(string, key=str.isalnum)]

print(result)
输出:
['rename', '_', 'file', '_', '1122', '--', '23', '-_', '12']
编辑:
我想出了一个可能更简单的解决方案,使用正则表达式:
string = 'rename_file_1122--23-_12'
result = re.split('([_-]*)', string)
print(result)
相同的输出。
re.split 将根据匹配的正则表达式拆分字符串。我使用的表达式包含一个分组模式,而 split 包含结果中的匹配项:
([_-]*)
表示匹配(并记住结果)的一个或多个 _- 中的任何一个的序列。 * 表示一个或多个, [] 表示方括号内的任何内容。
如果没有组,只使用 [_-]* 我们会得到以下结果,没有匹配:
string = 'rename_file_1122--23-_12'
result = re.split('[_-]*', string)
print(result)
输出:
['rename', 'file', '1122', '23', '12']

关于Python : Splitting a string by numbers, 字母和 -_,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64252298/

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