import re
matches = re.findall(r'(\d+|\D+)', 'a815e8ef951')
matches = [ int(x) if x.isdigit() else x for x in matches ]
# Output: ['a', 815, 'e', 8, 'ef', 951]
>>> from itertools import groupby, chain
>>> a='a815e8ef951'
>>> [''.join(s) for _, s in groupby(a, str.isalpha)]
['a', '815', 'e', '8', 'ef', '951']
如果还想将整型字符串转换为int,则必须将表达式修改为:
^{pr2}$
为了使最后一个表达式更简洁,可以将if部分移动到某个函数中,如下所示:
def tranform_string(to_int, my_list):
my_string = ''.join(my_list)
return int(my_string) if to_int else my_string
new_list = [tranform_string(i, s) for i, s in groupby(a, str.isdigit)]
# using `isdigit()` here ^
您可以使用正则表达式和
re
来执行此操作:您主要将
itertools.groupby
与列表理解表达式一起使用:如果还想将整型字符串转换为
^{pr2}$int
,则必须将表达式修改为:为了使最后一个表达式更简洁,可以将
if
部分移动到某个函数中,如下所示:其中
new_list
将保存所需的内容。在相关问题 更多 >
编程相关推荐