如果字符串在文本文件中,如何在 Python 中检查并打印该行?
Posted
技术标签:
【中文标题】如果字符串在文本文件中,如何在 Python 中检查并打印该行?【英文标题】:How to check in Python if string is in a text file and print the line? 【发布时间】:2013-05-02 04:24:03 【问题描述】:我要做的是检查是否在文本文件中找到了这个字符串。如果是,我希望它打印出该行,否则打印出一条消息。
到目前为止,我已经实现了这段代码:
def check_string(string):
w = raw_input("Input the English word: ")
if w in open('example.txt').read():
for w.readlines():
print line
else:
print('The translation cannot be found!')
我尝试过实现它,但出现语法错误。
上面写着:
行中的无效语法 -- 对于 w.readlines():
知道如何使用这行代码吗?
【问题讨论】:
请发布您的错误信息 如果check_string
也使用raw_input
来获取您要查找的单词,为什么还要接受参数?
它在该行显示无效语法 -- for w.readlines():
在其他问题中,您的缩进已关闭。
你听说过grep
吗?
【参考方案1】:
你应该试试这样的:
import re
def check_string():
#no need to pass arguments to function if you're not using them
w = raw_input("Input the English word: ")
#open the file using `with` context manager, it'll automatically close the file for you
with open("example.txt") as f:
found = False
for line in f: #iterate over the file one line at a time(memory efficient)
if re.search("\b0\b".format(w),line): #if string found is in current line then print it
print line
found = True
if not found:
print('The translation cannot be found!')
check_string() #now call the function
如果您正在搜索确切的单词而不仅仅是子字符串,那么我建议在这里使用regex
。
例子:
>>> import re
>>> strs = "foo bar spamm"
>>> "spam" in strs
True
>>> bool(re.search("\b0\b".format("spam"),strs))
False
【讨论】:
你为什么不改用re
?这样,你就有了更多的控制权。此外,这种方法的问题在于它不会匹配跨多行的字符串。不过仍然是一个很好的答案。 +1 :)
@AshwiniChaudhary 感谢您的代码,我已尝试运行它,但似乎没有任何反应。甚至没有提示我输入。我已经把代码文件和文本文件放在同一个目录下。
@user1433571 您必须调用该函数才能使其工作。试试看:check_string()
@AshwiniChaudhary 谢谢,它有效!我如何使用正则表达式搜索确切的字符串?我对 Python 很陌生,所以仍然掌握它的窍门。另外,如果我要查找的字符串也存在于另一行中,我是否也将其打印出来呢?提前致谢!【参考方案2】:
下面是一个使用in
运算符的简单示例:
w = raw_input("Input the English word: ") # For Python 3: use input() instead
with open('foo.txt') as f:
found = False
for line in f:
if w in line: # Key line: check if `w` is in the line.
print(line)
found = True
if not found:
print('The translation cannot be found!')
如果您想知道字符串的位置,那么您可以使用find()
而不是in
运算符。
【讨论】:
以上是关于如果字符串在文本文件中,如何在 Python 中检查并打印该行?的主要内容,如果未能解决你的问题,请参考以下文章
我如何在 Python (2.72) 上打开一个文本文件中的行
从client(content="<p></p>")中检測到有潜在危急的 Request.Form 值。
如何使用Python将某些字符串从文本文件复制到Word doc?