用Regex分隔文本文件中的单词

2024-09-30 16:29:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在很难在一个txt文档中分词 将regex放入一个列表中,我尝试了“.split”和“.readlines”我的文档 由“hellopleashelpmeunderstand”这样的词组成 大写但没有空格,所以我不知道如何将它们放入列表中。 这是我目前拥有的,但它只返回一个单词。你知道吗

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

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

如果有人能指导我找到解决办法,我将不胜感激。你知道吗


Tags: 文档retxt列表单词file1regexsplit
3条回答

这个怎么样:

import re
strData = """HelloPleaseHelpMeUnderstand
And here not in
HereIn"""
listWords = re.findall(r"(([A-Z][a-z]+){2,})", strData)
result = [i[0] for i in listWords]
print(result)
# ['HelloPleaseHelpMeUnderstand', 'HereIn']
print(re.sub(r"\B([A-Z])", r" \1", "DoIThinkThisIsABetterAnswer?"))

我认为这是一个更好的答案吗?你知道吗

一个基于lookarounds的正则表达式可以在粘在一起的字母单词之间插入空格

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。注:数字或单字母大写单词如IA等需要调整

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

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]*-零个或多个小写字母。你知道吗

相关问题 更多 >