之前发布了这个问题的更糟糕的版本。我已经平静下来,精炼了我的搜索,我几乎想出了我需要的东西。我试图从一个体面大小的文本文件中提取所有以“ing”结尾的单词。此外,我应该使用正则表达式,但这令我非常困惑,所以在这一点上,我只是想得到我需要的结果。这是我的代码:
import re
file = open('ing words.txt', 'r')
pattern = re.compile("\w+ing")
print re.findall(r'>(\w+ing<')
这是我得到的:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-32-861693e3a217> in <module>()
3 pattern = re.compile("\w+ing")
4
----> 5 print re.findall(r'>(\w+ing<')
TypeError: findall() takes at least 2 arguments (1 given)
我还是很陌生,我不知道为什么需要第二个论点(我知道简短的答案是“因为”,但是我想知道理论是否有人可以采取解释它的时间),但更多 - 如何添加第二个参数,不会进一步破坏我的代码。我有信心(但可能是错误的)在“打印re.findall(r'&gt;(\ w + ing&lt;')之后”我需要某种方式重新告诉我的终端它需要在那个词内搜索。 TXT。
我甚至关闭了吗?
答案 0 :(得分:3)
re.findall()
要求提供至少2个参数 - 模式本身和要搜索的字符串。您虽然打算使用pattern.findall()
代替:
print pattern.findall(r'>(\w+ing<')
答案 1 :(得分:0)
您必须将两个参数传递给re.findall()或将其称为pattern
方法:
print pattern.findall(file.read())
print re.findall(r'>(\w+ing<', file.read())
或
for line in file:
print pattern.findall(file.read())
print re.findall(r'>(\w+ing<', line)
建议:最好使用With语句处理文件。
with open('ing words.txt', 'r') as file:
print pattern.findall(file.read())
print re.findall(r'>(\w+ing<', file.read())