所以基本上我有以下文本文件
你好,你好吗?
我过得很好
是吗?
是的
我希望将所有单词添加到新列表中,其中所有单词都大于3且小于7。我的代码显示在下面。
f=open("W7Ex11.txt","r")
words=[]
for line in f:
line=line.rstrip()
if len(line)>=3 and len(line)<=7:
words.append(line)
f.close()
print(words)
不幸的是,我只附加了最后一个词,即“是”。老实说,我不明白为什么会出错。有人知道为什么我的代码无法按我的意愿工作吗?
答案 0 :(得分:1)
您需要将行分成单词。 split(char)函数在找到char的任何地方拆分字符串。试试这个:
words = []
with open("W7Ex11.txt","r") as f: # will automatically close file afterwards
for line in f:
line = line.rstrip()
for word in line.split(' '):
word = word.strip() # strip to remove whitespace around the word
if 3 <= len(word) <= 7: # yes, you can do that in Python :)
words.append(word)
print(words)
答案 1 :(得分:0)
读取文件并搜索单词的长度并将其提取
import re
with open("W7Ex11.txt","r") as f:
a=' '.join(f.read().splitlines())
re.findall('([\w\?]{3,7})',a)
或
new_list=[]
for line in a:
for i in re.finditer('([\w\?]{3,7})',line):
new_list.append(line[i.start():i.end()+1].strip(' '))
print(new_list)
输出:
['hello', 'you', 'how', 'are', 'you', 'doing?', 'doing', 'well', 'that', 'so?', 'yes']