如果这些单词是8个字符或更长并且不包含#,@或:符号,则读入文件并仅打印每行的最后一个单词

时间:2018-06-08 03:52:52

标签: python

到目前为止,我可以编写代码来过滤掉长度小于8个字符的单词以及包含#,@或:符号的单词。但是我无法弄清楚如何才能得到最后的话。到目前为止,我的代码看起来像这样。

    f = open("file.txt").read()
    for words in f.split():
      if len(words) >= 8 and not "#" in words and not "@" in words and not ":" in words:
    print(words)

编辑 - 对不起我对此很新,所以我也可能在上面做错了。该文件非常长,因此给出了第一行和预期的输出。第一行是:

"我希望他们能够展示Dick Cheney的作品#GOPdebates候选人在#GOPdebate中追随@HillaryClinton 32次 - 但仍然是#34;

预期产量是"保持"但我的代码输出"候选人"并且"保持"。

3 个答案:

答案 0 :(得分:0)

for line in open(filename):
    if some_test(line):
       do_rad_thing(line)

我认为你想要的是......你有some_test部分和do_rad_thing部分

答案 1 :(得分:0)

我认为这样可行:您可以使用readlines打开文件并在split()中传递分隔符,然后使用[-1]获取最后一个。

f = open(“file.txt”)。realines() 对于f中的行:         last_word = line.split()[ - 1]

答案 2 :(得分:0)

这应该完成你想要做的事情。 使用.split()将文件拆分为数组,然后使用[-1]访问最后一个值。我还将所有非法字符放入一个数组中,然后检查illegal_chars数组中的任何字符是否都在last_word

f = open("file.txt").read()
illegal_chars = ["#", "@", ":"]
last_word = f.split()[-1]

if( len(last_word) >= 8 and illegal_chars not in last_word:
    print(last_word)