Python中的正则表达式:查找长度为n或更长的单词

时间:2019-03-16 21:37:22

标签: python regex

我们刚刚在我的第一个python课程中学习了使用正则表达式(这是编程的新手),而我正在努力解决的一项家庭作业问题要求我们使用正则表达式来查找长度为n或更长的所有单词,然后使用该正则表达式从文本文件中找到最长的单词。

当我要测试特定长度时我没有问题,但是当我使用任意变量n时,它将返回一个空列表:

import re
with open('shakespeare.txt') as file:
    shakespeare = file.read()

n = 10 #if I take this out and put an actual number in the curly bracket below, it works just fine.

words = re.findall('^[A-Za-z\'\-]{n,}', shakespeare, re.M)
print(words)
len(words)

我不确定我做错了什么以及如何解决此问题。任何帮助将不胜感激!

有关更多背景信息... 为了找到最长的单词,我使用了:

#for word with special characters such as '-' and '''
longest_word = max(re.findall('\S+', shakespeare, re.M), key = len)

#for word without special characters:
longest_pure_word = max(re.findall('[A-Za-z]+ ', shakespeare, re.M), key = len)

output1(special char): tragical-comical-historical-pastoral
output2(pure word): honorificabilitudinitatibus

我没有使用n是因为我无法解决问题的第一部分。

1 个答案:

答案 0 :(得分:0)

尝试一下:

import re
with open('shakespeare.txt') as file:
    shakespeare = file.read()

n = 10

words = re.findall('^[A-Za-z\'\-]{'+str(n)+',}', shakespeare, re.M)
print(words)
len(words)