gpt4 book ai didi

Python Regex 与第一行不匹配

转载 作者:行者123 更新时间:2023-12-04 12:09:04 26 4
gpt4 key购买 nike

我有一个文本文件,内容是,

Submitted By,Assigned,Closed
Name1,10,5
Name2,20,10
Name3,30,15
我写了一个正则表达式模式,提取第一个 , 之间的值第二个 ,
^\w+,(\w+),.*$
我的 Python 代码是
import re

f=r'sample.txt'
rePat = re.compile('^\w+,(\w+),.*$', re.MULTILINE)

text = open(f, 'r').read()
output = re.findall(rePat, text)

print (f)
print (output)
预期输出:
Assigned
10
20
30
但我越来越
10
20
30
为什么它缺少第一行?

最佳答案

问题是由于\w+匹配一个或多个单词字符(主要是字母、数字、下划线和一些变音符号)。第二个和第三个逗号之间有一个空格,所以我建议用 [^,\n]+ 匹配逗号之间的任何字符(这里的 \n 是为了确保我们保持在同一行内)。
您可以使用

rePat = re.compile(r'^[^,\n]+,([^,\n]+),.*$', re.MULTILINE)
或者,如果您不需要提取任何其他内容,则稍微简化一下:
rePat = re.compile(r'^[^,\n]+,([^,\n]+)', re.MULTILINE)
this regex demo .细节:
  • ^ - 行首
  • [^,\n]+ - 除 , 之外的一个或多个字符和LF
  • , - 逗号
  • ([^,\n]+) - 第 1 组:除 , 之外的一个或多个字符和 LF。

  • Python demo :
    import re

    text = r"""Submitted By,Assigned,Closed
    Name1,10,5
    Name2,20,10
    Name3,30,15"""

    rePat = re.compile('^[^,\n]+,([^,\n]+),.*$', re.MULTILINE)
    output = re.findall(rePat, text)
    print (output)
    # => ['Assigned', '10', '20', '30']

    关于Python Regex 与第一行不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68409349/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com