Python 查找以数字开头的所有行
提取以数字开头的所有行的正则表达式是什么 我知道Python 查找以数字开头的所有行,python,regex,python-2.7,python-3.x,Python,Regex,Python 2.7,Python 3.x,提取以数字开头的所有行的正则表达式是什么 我知道^字符用于匹配行首的任何内容,但我没有正确构造它 以下是我尝试过的: re.findall('^[0-9]+',mystring). 我猜你想匹配整条线路,但它只匹配起始号码。您需要包含贪婪的通配符和多行参数,以告诉它您要搜索多行。尝试: re.findall('^[0-9].*', mystring, re.MULTILINE) 您忘记了re.MULTILINE修饰符和*之后的[0-9]来匹配行的其余部分。如果要使用正则表达式,则应使用r”(
^
字符用于匹配行首的任何内容,但我没有正确构造它
以下是我尝试过的:
re.findall('^[0-9]+',mystring).
我猜你想匹配整条线路,但它只匹配起始号码。您需要包含贪婪的通配符和多行参数,以告诉它您要搜索多行。尝试:
re.findall('^[0-9].*', mystring, re.MULTILINE)
您忘记了
re.MULTILINE
修饰符和*
之后的[0-9]
来匹配行的其余部分。如果要使用正则表达式,则应使用r”(?m)^[0-9].*”
:
(?m)
多行内联修饰符等于re.multiline
或re.m
选项,使^
匹配行的开头和$
匹配行的结尾,而不仅仅是整个字符串的开头/结尾
然而,这并不是最好的方法。使用拆分\n并遍历行,检查第一个字符是否为数字
以下是我的建议:
with open('file', 'r') as f:
for line in f:
if line and line[0].isdigit():
print(line)
请参见发生了什么?您的输入是什么,输出是什么,您尝试做了什么来解决问题,…您忘记了
多行
修饰符和*
来匹配行的其余部分。然而,这并不是最好的方法。使用\n
进行拆分,并在各行中循环检查第一个字符是否为数字。见^^是的。我也会这么做。附议。似乎是一种更适合解决此问题的方法。您的意思是如果len(line)>0和line[0]。isdigit()正确吗?您的解决方案导致索引超出范围range@PrashantBhanarkar是的,它应该是len(line)>0
,而不是line[0]
。你甚至不需要检查行的长度,“if line”就可以了。@MarkLawrence我在4年前对Python的了解要少得多。在[0-9]
之后使用+
是没有意义的。即使没有它,它也能工作。你是对的。我只是复制了问题的代码并在没有仔细查看的情况下进行了修复。
with open('file', 'r') as f:
for line in f:
if line and line[0].isdigit():
print(line)