繁体   English   中英

Python 正则表达式查找混入随机空白的单词

[英]Python Regex Find Word with Random White Space Mixed in

当字符串在随机位置添加空格时,如何编写正则表达式来匹配字符串中的特定单词?

我有一个从具有表结构的 pdf 文档中提取的字符串。 由于该结构,提取的字符串包含随机插入的新行和空格。 我正在寻找的特定单词和短语都以正确的顺序排列,但是用空格随机切碎。 例如:“堆栈溢出”。

pdf 文档的内容是使用 PyPDF2 提取的,因为这是我公司的 python 库中唯一可用的选项。

我知道我可以为此编写一个特定的字符串匹配,每个字符后可能有一个空格,但必须有更好的搜索方法。

这是我一直在尝试做的一个例子。

my_string = "find the ans weron sta ck over flow" 
# r's\s*t\s*a\s*c\s*k\s*'  # etc
my_cleaned_string = re.sub(r's\s*t\s*a\s*c\s*k\s*', '', my_string)

有什么建议么?

您可能在这里做的最好的事情就是去除所有空格,然后在去除的文本中搜索目标字符串:

my_string = "find the ans weron sta ck over flow"
my_string = re.sub(r'\s+', '', my_string)
if 'stack' in my_string:
    print("MATCH")

我在上面使用“最佳”的原因是,通常您不知道空格是实际的单词边界,还是只是插入的随机空格。 所以,你真的只能在剥离的文本中找到你的目标作为 substring 。 请注意,输入文本'rust acknowledge'现在将匹配stack的正数。

实际上,您正在做的事情最好的方法。 我可以建议的唯一补充是从一个单词动态构造这样的正则表达式:

word = "stack"
regexp = r'\s*'.join(word)
my_string = "find the ans weron sta ck over flow" 
my_cleaned_string = re.sub(regexp, '', my_string)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM