Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找以数字开头的所有行_Python_Regex_Python 2.7_Python 3.x - Fatal编程技术网

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)