Extract numbers from a string into a list
本问题已经有最佳答案,请猛点这里访问。
我想将一个字符串中的数字提取到一个列表中,但也包括其他字母。
例如:
1 | a='a815e8ef951' |
应导致输出:
1 | ['a',815,'e',8,'f',951] |
号
谢谢!
为此,可以使用正则表达式和
1 2 3 4 | 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] |
您主要使用
1 2 3 4 5 | >>> from itertools import groupby, chain >>> a='a815e8ef951' >>> [''.join(s) for _, s in groupby(a, str.isalpha)] ['a', '815', 'e', '8', 'ef', '951'] |
号
如果还要将整型字符串转换为
1 2 | >>> [''.join(s) if i else int(''.join(s)) for i, s in groupby(a, str.isalpha)] ['a', 815, 'e', 8, 'ef', 951] |
为了使最后一个表达式更清晰,您可以将
1 2 3 4 5 6 | 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 ^ |
。
其中,