如何从 re.findall() 结果中删除特定模式
How to remove a specific pattern from re.findall() results
我有一个 re.findall() 在 python 中搜索模式,但它 returns 一些不需要的结果,我想知道如何排除它们。正文如下,我想获取名称,而我的语句 (re.findall(r'([A-Z]{4,} \w. \w*|[A-Z]{4,} \w*)', text)
) 返回的是:
'ERIN E. SCHNEIDER',
'MONIQUE C. WINKLER',
'JASON M. HABERMEYER',
'MARC D. KATZ',
'JESSICA W. CHAN',
'RAHUL KOLHATKAR',
'TSPU or taken',
'TSPU or the',
'TSPU only',
'TSPU was',
'TSPU and']
我想摆脱“TSPU”模式项目。有人知道怎么做吗?
JINA L. CHOI (NY Bar No. 2699718)
ERIN E. SCHNEIDER (Cal. Bar No. 216114) schneidere@sec.gov
MONIQUE C. WINKLER (Cal. Bar No. 213031) winklerm@sec.gov
JASON M. HABERMEYER (Cal. Bar No. 226607) habermeyerj@sec.gov
MARC D. KATZ (Cal. Bar No. 189534) katzma@sec.gov
JESSICA W. CHAN (Cal. Bar No. 247669) chanjes@sec.gov
RAHUL KOLHATKAR (Cal. Bar No. 261781) kolhatkarr@sec.gov
- The Investor Solicitation Process Generally Included a Face-to-Face Meeting, a Technology Demonstration, and a Binder of Materials [...]
你可以做一些简单的 .filter
-ing,如果你的数组是 results
,
removed_TSPU_results = list(filter(lambda: not result.startswith("TSPU"), results))
您可以使用
\b(?!TSPU\b)[A-Z]{4,}(?:(?:\s+\w\.)?\s+\w+)?
参见 this regex demo。 详情:
\b
- 单词边界(否则,正则表达式可能会“捕获”包含 TSPU
的单词的一部分)
(?!TSPU\b)
- 如果 TSPU
字符串后跟 non-word 字符或字符串结尾紧跟在当前位置
[A-Z]{4,}
- 四个或更多大写 ASCII 字母
(?:(?:\s+\w\.)?\s+\w+)?
- 可选出现:
(?:\s+\w\.)?
- 可选出现一个或多个空格、一个单词 char 和一个文字 .
char
\s+
- 一个或多个空格
\w+
- 一个或多个单词字符。
在Python中,可以使用
re.findall(r'\b(?!TSPU\b)[A-Z]{4,}(?:(?:\s+\w\.)?\s+\w+)?', text)
我有一个 re.findall() 在 python 中搜索模式,但它 returns 一些不需要的结果,我想知道如何排除它们。正文如下,我想获取名称,而我的语句 (re.findall(r'([A-Z]{4,} \w. \w*|[A-Z]{4,} \w*)', text)
) 返回的是:
'ERIN E. SCHNEIDER',
'MONIQUE C. WINKLER',
'JASON M. HABERMEYER',
'MARC D. KATZ',
'JESSICA W. CHAN',
'RAHUL KOLHATKAR',
'TSPU or taken',
'TSPU or the',
'TSPU only',
'TSPU was',
'TSPU and']
我想摆脱“TSPU”模式项目。有人知道怎么做吗?
JINA L. CHOI (NY Bar No. 2699718)
ERIN E. SCHNEIDER (Cal. Bar No. 216114) schneidere@sec.gov
MONIQUE C. WINKLER (Cal. Bar No. 213031) winklerm@sec.gov
JASON M. HABERMEYER (Cal. Bar No. 226607) habermeyerj@sec.gov
MARC D. KATZ (Cal. Bar No. 189534) katzma@sec.gov
JESSICA W. CHAN (Cal. Bar No. 247669) chanjes@sec.gov
RAHUL KOLHATKAR (Cal. Bar No. 261781) kolhatkarr@sec.gov
- The Investor Solicitation Process Generally Included a Face-to-Face Meeting, a Technology Demonstration, and a Binder of Materials [...]
你可以做一些简单的 .filter
-ing,如果你的数组是 results
,
removed_TSPU_results = list(filter(lambda: not result.startswith("TSPU"), results))
您可以使用
\b(?!TSPU\b)[A-Z]{4,}(?:(?:\s+\w\.)?\s+\w+)?
参见 this regex demo。 详情:
\b
- 单词边界(否则,正则表达式可能会“捕获”包含TSPU
的单词的一部分)(?!TSPU\b)
- 如果TSPU
字符串后跟 non-word 字符或字符串结尾紧跟在当前位置[A-Z]{4,}
- 四个或更多大写 ASCII 字母(?:(?:\s+\w\.)?\s+\w+)?
- 可选出现:(?:\s+\w\.)?
- 可选出现一个或多个空格、一个单词 char 和一个文字.
char\s+
- 一个或多个空格\w+
- 一个或多个单词字符。
在Python中,可以使用
re.findall(r'\b(?!TSPU\b)[A-Z]{4,}(?:(?:\s+\w\.)?\s+\w+)?', text)