首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写脚本以迭代地搜索文档并根据模式返回结果

如何编写脚本以迭代地搜索文档并根据模式返回结果
EN

Stack Overflow用户
提问于 2019-10-17 14:06:31
回答 3查看 36关注 0票数 1

我有一个大型文档,其中包含一个特定模式中出现的项目:"TEXT I return ",“(逗号结束我想返回的文本)”,"more text I不需要“。“我需要的文本”(需要紧接句号后面的文本) ",“(逗号结束文本)。诸若此类。

我希望编写一个脚本,它将通过文档并取出(我需要的文本)。

我没试过多少。我试过玩re.compile,但我大多是初学者。

文件例子:苹果很有趣,橘子更好。橘子很有趣,香蕉更好。香蕉很奇怪,香蕉有点奇怪。

我想回去:苹果很好玩,橘子很好玩,香蕉很奇怪

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-17 14:58:54

提取','之前并在begin of text(^)'.'前面的文本

代码语言:javascript
复制
import re

text = """APPLES ARE FUN, oranges are better. ORANGES ARE FUN, bananas are better. BANANAS ARE WEIRD, bananas are a little weird"""

print(re.findall('(?:^|\.\s+)([\w\s]+)(?=,)', text))
# ['APPLES ARE FUN', 'ORANGES ARE FUN', 'BANANAS ARE WEIRD']
票数 0
EN

Stack Overflow用户

发布于 2019-10-17 14:30:36

如果您只想要大写的ASCII字母,则如下所示:

代码语言:javascript
复制
[A-Z]+
  • 方括号定义了要匹配的事物集合。
  • 连字符定义了一个范围,在这种情况下从大写A到大写Z
  • 加号表示这些字符中至少有一个在此范围内,但如果它们相邻,则可能更多。

示例:

http://regexr.com/4n1s1

代码语言:javascript
复制
import re
pattern = re.compile('[A-Z]+')
matches = pattern.findall('APPLES ARE FUN, oranges are better. ORANGES ARE FUN, bananas are better')
print(matches)
# ['APPLES', 'ARE', 'FUN', 'ORANGES', 'ARE', 'FUN']
票数 1
EN

Stack Overflow用户

发布于 2019-10-17 14:23:49

根据您的模式,您可以使用以下内容:

代码语言:javascript
复制
from re import findall as regexSearch

with open("./myFileName.txt", "r") as myFile:
    content = myFile.read()

pattern = r"[A-Z ]{2,}"
matches = regexSearch(pattern, content)
for match in matches:
    print(match)

测试模式的一个好工具是regex101.com。它还解释了它发现了什么以及为什么它找到了它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58434579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档