How to check in Python if string is in a text file and print the line?
39,496
Solution 1
You should try something like this:
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("\b{0}\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
If you are searching for exact words instead of just sub-string then I would suggest using regex
here.
Example:
>>> import re
>>> strs = "foo bar spamm"
>>> "spam" in strs
True
>>> bool(re.search("\b{0}\b".format("spam"),strs))
False
Solution 2
Here is a bit simpler example by using in
operator:
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!')
If you'd like to know the position of the string, then you can use find()
instead of in
operator.
Author by
bn60
Updated on June 02, 2020Comments
-
bn60 almost 4 years
What I am trying to do is to check whether this string is found in the text file. If it does, I want it to printout that line, else printout a message.
I have implemented this code so far:
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!')
I've tried implementing that but I got a syntax error.
It says:
invalid syntax at the line -- for w.readlines():
Any idea on how to go with this line of code?
-
kirbyfan64sos about 11 yearsWhy don't you use
re
instead? That way, you have more control. Also, the problem with this approach is that it won't match a string that spans multiple lines. Still a good answer though. +1 :) -
bn60 about 11 years@AshwiniChaudhary Thanks for the code, I've tried running it, but there seems to be nothing going on. Didn't even prompt me to input. I've put the codefile and the text file in the same directory though.
-
Ashwini Chaudhary about 11 years@user1433571 you have to call the function in order to make it work. try :
check_string()
-
bn60 about 11 years@AshwiniChaudhary Thanks, it works! How do I search for the exact string using regex though? I'm quite new with Python, so still getting the hang of it. Also, what if the string that I'm looking for exist also in another line, how about do I print that out too? Thanks in advance!