Skip to main content
 首页 » 编程设计

python之使用正则表达式在文本文件中间隔单词

2024年12月31日30落叶

我目前很难在 txt 文档上分离单词 将正则表达式放入列表中,我尝试了“.split”和“.readlines”我的文档 由诸如“HelloPleaseHelpMeUnderstand”之类的词组成 大写但没有间隔,所以我不知道如何将它们放入列表中。 这是我目前拥有的,但它只返回一个单词。

import re 
file1 = open("file.txt","r") 
strData = file1.readline() 
listWords = re.findall(r"[A-Za-z]+", strData) 
print(listWords) 

我这样做的一个目标是在列表的元素中搜索另一个词,但我只是想知道如何列出它们以便我可以继续我的工作。

如果有人能指导我找到解决方案,我将不胜感激。

请您参考如下方法:

基于环视的常规正则表达式在粘合字母单词之间插入空格是

import re 
text = "HelloPleaseHelpMeUnderstand" 
print( re.sub(r"(?<=[A-Z])(?=[A-Z][a-z])|(?<=[a-z])(?=[A-Z])", " ", text) ) 
# => Hello Please Help Me Understand 

参见 regex demo .需要注意调整以考虑数字或单字母大写单词,如 I、A 等。

关于您当前的代码,您需要确保将整个文件读入一个变量(使用 file1.read(),您正在使用 readline() 读取第一行) 并使用 [A-Z]+[a-z]* 正则表达式来匹配按照您显示的方式粘贴的所有单词:

import re 
with open("file.txt","r") as file1: 
    strData = file1.read() 
    listWords = re.findall(r"[A-Z]+[a-z]*", strData) 
    print(listWords) 

参见 Python demo

图案细节

  • [A-Z]+ - 一个或多个大写字母
  • [a-z]* - 零个或多个小写字母。