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

Python中的正则表达式:查找长度为n或更长的单词,python,regex,Python,Regex,在我的第一门python课程中,我们刚刚学习了使用正则表达式(对编程来说是非常新的),我正在努力解决的一个家庭作业问题要求我们使用正则表达式查找长度为n或更长的所有单词,然后使用该正则表达式从文本文件中查找使用的最长单词 当我想测试特定长度时,我没有问题,但当我使用任意变量n时,它返回一个空列表: import re with open('shakespeare.txt') as file: shakespeare = file.read() n = 10 #if I take thi

在我的第一门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,因为我无法使问题的第一部分起作用。

试试这个:

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)

您需要将字符串标记为
r'
,或者改用双反斜杠进行转义。另外,要将
n
的值放入需要格式化的字符串中,请使用
'{{{{n}}}'.format(n=n)
。额外的
'{…}}'
是格式设置“生存”所必需的。或者您可以使用
'{%d}'%n
。为什么希望
n
被变量的内容替换,而表达式中没有其他字符被替换?谢谢!它工作得很好!很高兴听到这个消息!请随意将答案标记为“已接受”,如果对您有帮助,请进行投票。