所以这是一个给定的字符串,您可以在其中看到某些地方缺少值。 我们必须以某种指定的方式填充那些缺失值。
s = "_, _, 30, _, _, _, 50, _, _ "
我对问题的第一位关注的是从字符串中提取“_, _, 30”部分(以便我可以将其拆开,修改并替换原始字符串中的修改位)。我尝试使用:
import re
res = re.findall("_.*[0-9]",s)
print(res)
我得到的输出是:
_, _, 30, _, _, _, 50
而想要的结果是:
_, _, 30
我如何使用 re 模块来做到这一点?
答案 0 :(得分:1)
您的问题来自这样一个事实,即默认正则表达式运算符是贪婪的 - 这意味着它们返回最长匹配,有两种方法可以解决您的问题:
(1) 只是为了从贪婪转向非贪婪运算符:
>>> re.findall("_.*?[0-9]+",s)
['_, _, 30', '_, _, _, 50']
(2) 用非数字替换“any”:
>>> re.findall(r"[^0-9]*[0-9]+", s)
['_, _, 30', ', _, _, _, 50']