Python无法追加文件读取

时间:2018-10-26 15:02:00

标签: python

所以基本上我有以下文本文件

  

你好,你好吗?
  我过得很好
  是吗?
  是的

我希望将所有单词添加到新列表中,其中所有单词都大于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)

不幸的是,我只附加了最后一个词,即“是”。老实说,我不明白为什么会出错。有人知道为什么我的代码无法按我的意愿工作吗?

结果 https://imgur.com/a/MAdhOfz

2 个答案:

答案 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']