I am getting the following error with Python 3.1.4 which used to work well in Python 2.7.2.
TypeError: Can't convert 'list' object to str implicitly. I get the error on the if statement. Please let me know how to fix this. Thanks!
In
for word in keywords: # Iterate through keywords
if re.search(r"\b"+word+r"\b",line1): #Search kewords in the input line
Update1:
I am trying to create a list from keywords which is in a file. Each line has one keyword. Am I reading the file properly?
keyword_file=r"KEYWORDS.txt"
f0=open(keyword_file,'r')
keywords = map(lambda a: a.split('\n'),map(str.lower, f0.readlines()))
keyword file contains:
Keyword1
Keyword2
.
.
.
Keywordn
I want a list called keywords = ['Keyword1','Keyword2',...,'Keywordn']
You split the lines although they have already been split by readlines(). This should work:
# actually no need for readline() here, the file object can be
# directly used to iterate over the lines
keywords = (line.strip().lower() for line in f0)
# ...
for word in keywords:
if re.search(r"\b"+word+r"\b",line1):
What's used here is a generator expression. You should learn about those, they are quite handy, as well as about list comprehensions which can often be used to replace map and filter.
Note that it might be more performant to create the regular expression before the loop, like this:
keywords = (line.strip() for line in f0)
# use re.escape here in case the keyword contains a special regex character
regex = r'\b({0})\b'.format('|'.join(map(re.escape, keywords)))
# pre-compile the regex (build up the state machine)
regex = re.compile(regex, re.IGNORECASE)
# inside the loop over the lines
if regex.search(line1)
print "ok"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With