Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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 Can';t找出列表的正则表达式匹配项_Python_Regex - Fatal编程技术网

Python Can';t找出列表的正则表达式匹配项

Python Can';t找出列表的正则表达式匹配项,python,regex,Python,Regex,我不知道该从哪里开始弄清楚如何从下面列表的小片段中提取出团队名称。似乎有太多的变化。显然,在所有团队名称之前有一个空格。但它们不是固定长度的名称,有些名称本身内部有连字符、撇号和空格。在团队的最后一个单词之后,在末尾的单个“A”或双“AA”字母之前,始终至少有一个空格 &nbsp 1 Clemson A = &nbsp 5 Ohio State A = &nbsp155 Tennessee-Martin

我不知道该从哪里开始弄清楚如何从下面列表的小片段中提取出团队名称。似乎有太多的变化。显然,在所有团队名称之前有一个空格。但它们不是固定长度的名称,有些名称本身内部有连字符、撇号和空格。在团队的最后一个单词之后,在末尾的单个“A”或双“AA”字母之前,始终至少有一个空格

&nbsp  1  Clemson              A  =
&nbsp  5  Ohio State           A  =
&nbsp155  Tennessee-Martin     AA =
&nbsp152  Louisiana-Monroe     A  =
&nbsp104  Hawai'i              A  =
&nbsp193  VMI                  AA =
&nbsp202  Stephen F. Austin    AA =

有人想试试这个吗?

像这样的怎么样?不需要正则表达式

是字符串列表,其中每个字符串都是数据中的一行

for line in lines:
    splits = line.split(" ")
    teamName = splits[1]
    if hasNumbers(teamName):
        teamName = splits[2]

    print(teamName)


def hasNumbers(inputString):
    return any(char.isdigit() for char in inputString)

像这样的怎么样?不需要正则表达式

是字符串列表,其中每个字符串都是数据中的一行

for line in lines:
    splits = line.split(" ")
    teamName = splits[1]
    if hasNumbers(teamName):
        teamName = splits[2]

    print(teamName)


def hasNumbers(inputString):
    return any(char.isdigit() for char in inputString)

这相对容易:

import re

raw = """
&nbsp  1  Clemson              A  =
&nbsp  5  Ohio State           A  =
&nbsp155  Tennessee-Martin     AA =
&nbsp152  Louisiana-Monroe     A  =
&nbsp104  Hawai'i              A  =
&nbsp193  VMI                  AA =
&nbsp202  Stephen F. Austin    AA =
"""

teams = re.findall(r"&nbsp\s*\d+\s+(.*?)\s+A+\s+=", raw)

for team in teams:
    print(team)

# Clemson
# Ohio State
# Tennessee-Martin
# Louisiana-Monroe
# Hawai'i
# VMI
# Stephen F. Austin

这相对容易:

import re

raw = """
&nbsp  1  Clemson              A  =
&nbsp  5  Ohio State           A  =
&nbsp155  Tennessee-Martin     AA =
&nbsp152  Louisiana-Monroe     A  =
&nbsp104  Hawai'i              A  =
&nbsp193  VMI                  AA =
&nbsp202  Stephen F. Austin    AA =
"""

teams = re.findall(r"&nbsp\s*\d+\s+(.*?)\s+A+\s+=", raw)

for team in teams:
    print(team)

# Clemson
# Ohio State
# Tennessee-Martin
# Louisiana-Monroe
# Hawai'i
# VMI
# Stephen F. Austin

尝试使用以下正则表达式:

\d\s+(.*?)\s+=

    - \d match digit
    - \s+ followed by one or more space
    - (.*) anything
    - \s+ followed by one or more spaces
    - = followed by  `=`
被捕获的团队将为您提供团队名称

编辑如果A/AA不是团队名称的一部分,请执行以下操作:

\d\s+(.*?)\s+[A]+\s+=

尝试使用以下正则表达式:

\d\s+(.*?)\s+=

    - \d match digit
    - \s+ followed by one or more space
    - (.*) anything
    - \s+ followed by one or more spaces
    - = followed by  `=`
被捕获的团队将为您提供团队名称

编辑如果A/AA不是团队名称的一部分,请执行以下操作:

\d\s+(.*?)\s+[A]+\s+=

这是从网站上刮下来的还是文本文件的片段?最初的格式是什么?@dizzyf它被废弃了。页面乱七八糟。这是从网站上刮下来的还是一个文本文件的片段?最初的格式是什么?@dizzyf它被废弃了。页面乱七八糟。这还将捕获结尾处的a/AA加上空格,而不仅仅是团队名称。@zwer我的印象是a/AA是团队名称的一部分。如果不是编辑,请参阅编辑case@NishanthMatha不,A/AA不是团队名称的一部分。您更新的正则表达式现在似乎可以工作了。我只需要通过它来理解它。我几乎没有使用Regex的工作经验,所以对我来说这就像是一种新语言。这还将在结尾捕获a/AA加上空格,而不仅仅是团队名称。@zwer我的印象是a/AA是团队名称的一部分。如果不是编辑,请参阅编辑case@NishanthMatha不,A/AA不是团队名称的一部分。您更新的正则表达式现在似乎可以工作了。我只需要通过它来理解它。我几乎没有使用正则表达式的工作经验,所以它对我来说就像是一种新语言。这很有魅力。现在我需要看看你到底做了什么,然后我自己去弄明白……读@Nishanth Matha的答案,他解释得很好,这很有魅力。现在我需要看看你到底做了些什么,然后我自己去弄清楚……看看@Nishanth Matha的答案,他解释得很好