正则表达式匹配字符串中的数字并转换为整数问题求助
嘿,我一眼就瞅出你代码里的问题啦!你现在遇到的数字被拆成单个字符的情况,核心原因是不该循环遍历字符串sample的每个字符。
你看哦,当你写for line in sample的时候,Python会把这个长字符串拆成一个一个的字符来迭代——比如第一次循环line是'H',第二次是'e',以此类推。每次在单个字符里用re.findall找数字,自然只能拿到单个数字字符,根本抓不到连续的数字串呀!
修正后的代码
直接对整个sample字符串调用正则匹配就好,不需要多余的循环,然后把匹配到的字符串转成整数就行:
import re sample = "Here are a bunch of numbers 7746 and 12 and 1929 and 8827 and 7 and 8837 and 128 now convert them" # 匹配所有连续的数字序列 number_str_list = re.findall(r'[0-9]+', sample) # 批量转成整数 number_int_list = [int(num_str) for num_str in number_str_list] print(number_int_list)
运行结果
执行后会输出:[7746, 12, 1929, 8827, 7, 8837, 128],完全符合你想要的结果~
另外补充个小知识点:正则里的\d和[0-9]在大多数场景下效果一致,你也可以把正则写成r'\d+',得到的结果是一样的。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

