首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用regex查找文件中有两个以上元音的单词的出现情况?

如何使用regex查找文件中有两个以上元音的单词的出现情况?
EN

Stack Overflow用户
提问于 2014-11-01 00:20:30
回答 4查看 2K关注 0票数 0

我很难找到所有有两个或更多元音的单词。到目前为止,这是我拥有的,但当我运行它,它没有给我任何输出。我很感激你的帮助。

代码语言:javascript
复制
import re

def main():

in_f = open("jobs-061505.txt", "r")
read = in_f.read()
in_f.close()
for word in read:
    re.findall(r"\b[aAeEiIoOuU]*", read)
    in_f = open("twoVoweledWordList.txt", "w")
    in_f.write(word)
    in_f.close()

print (word)
main()

如果这不是正确的格式,我很抱歉。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-01 00:23:53

代码语言:javascript
复制
for word in read:  <--- iterating over chars in "read"!
    re.findall(r"\b[aAeEiIoOuU]*", read)  <-- using read again, discarding result

您的迭代和模式使用不对齐。另外,你不用结果。

考虑逐行处理文件等。

代码语言:javascript
复制
twovowels=re.compile(r".*[aeiou].*[aeiou].*", re.I)
nonword=re.compile(r"\W+", re.U)
file = open("filename")
for line in file:
    for word in nonword.split(line):
        if twovowels.match(word): print word
file.close()
票数 0
EN

Stack Overflow用户

发布于 2014-11-01 00:23:56

使用re.findall函数查找至少包含两个元音的所有单词,

代码语言:javascript
复制
>>> s = """foo bar hghghg ljklj jfjgf o jgjh aei
bar oum"""
>>> re.findall(r'\S*?[aAeEiIoOuU]\S*?[aAeEiIoOuU]\S*', s)
['foo', 'aei', 'oum']
>>> re.findall(r'\w*?[aAeEiIoOuU]\w*?[aAeEiIoOuU]\w*', s)
['foo', 'aei', 'oum']
票数 0
EN

Stack Overflow用户

发布于 2014-11-01 00:32:15

代码语言:javascript
复制
a='hello how are you"
[ x for x in a.split(' ') if len(re.findall('[aeiouAEIOU]',x))>=2 ]

代码中的修改

代码语言:javascript
复制
import re

def main():

in_f = open("jobs-061505.txt", "r")
read = in_f.read()
words = [ x for x in re.findall('\w+',read) if len(re.finall('[aeiouAEIOU]',x))>=2 ]
print words

在上面的代码中,'read()将把整个文件作为字符串读取。re.findall('\w+',read)会给出单词列表。如果列表的长度大于或等于2。它将以列表的形式存储。现在你可以对输出做任何事情了。

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

https://stackoverflow.com/questions/26685125

复制
相关文章

相似问题

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