【问题标题】:Check if the very last element of a list matches a string of choice检查列表的最后一个元素是否与选择的字符串匹配
【发布时间】:2021-05-17 17:42:31
【问题描述】:

这听起来像以前被问过,但我找不到任何可以帮助我的东西。

我的代码是:

with open('file directory', 'r') as file:
data = []

for line in file:

    for word in line.split():
        data.append(str(word))
        last_word = str(data[-1])
        if last_word == "bobby":
            print("yes")
        else:print("no")

我想知道我变成列表的文本文件的最后一个元素是否与字符串匹配,例如“bobby”。相反,我得到的基本上是列表中提到鲍比的次数的计数器。

终端:

yes
yes
yes

【问题讨论】:

    标签: python list text


    【解决方案1】:

    怎么样:

    with open('file directory', 'r') as file:
         last_line = f.readlines()[-1]
         print("yes" if last_line == "bobby" else "no")
    

    或者如果你想简短而神秘:

    with open('file directory', 'r') as file:
         print("yes" if f.readlines()[-1] == "bobby" else "no")
    

    【讨论】:

    • 三元运算符在 python 中不起作用。使用print("yes" if f.readlines()[-1] == "bobby" else "no") 这也只检查最后一行是否是鲍比而不是最后一个元素
    • @Jab 当您在会议期间回答问题并且您的老板突然开始与您交谈时,就会发生这种情况。谢谢。
    • 哈哈它发生了。尽管您的编辑仍然不正确。
    • 我为你修好了
    【解决方案2】:

    如果你想查找每一行的最后一个单词,这行得通。

    with open('asdf.txt', 'r') as file:
        for line in file:
            words = line.split()
            try:
                if words[-1] == "bobby":
                    print("yes")
                else:
                    print("no")
            except:
                # blank line
                pass
    

    【讨论】:

    • 这可以完美地检查每一行!我只需要最后一行,但这很有帮助
    • 如果你只想看最后一行,你可以使用其他答案中的一些代码。请记住,这里有性能权衡。看看这个答案:stackoverflow.com/a/54278929/4476484 并注意,对于非常大的文件,可能不建议使用 readlines 读取整个文件。此外,在使用file.readlines()[-1] 时,如果文件的最后一行为空白,您可能会遇到问题。根据您的应用程序,您可能希望忽略任何潜在的最后空白行,或者您可能不会。只是需要注意的事情。
    【解决方案3】:

    不要循环文件,只需将它变成一个列表并抓取最后一个元素。你非常接近,只是循环是不必要的:

    with open('file directory', 'r') as file:
        data = file.readlines()
        last_word = data[-1].split()[-1]
        if last_word == "bobby":
            print("yes")
        else:
            print("no")
    

    【讨论】:

    • 我不需要从文本文件中拆分所有单词和行吗?我只想检查最后一个字
    • @RrezonBeqiri 谢谢!通过向切片添加拆分来修复。应该工作
    • 映射线上应该有什么分割?
    • 我认为 split 函数需要 2 个参数,因为我现在将“ split() missing 1 required positional argument: 'string'” 作为错误
    • 应该是data[-1].split(),而不是split(data[-1]),但请记住,如果最后一行为空,您仍然会遇到错误。
    猜你喜欢
    • 2015-01-10
    • 1970-01-01
    • 2020-02-06
    • 2014-12-10
    • 2015-10-31
    • 2021-08-19
    • 1970-01-01
    • 2016-04-03
    • 2022-12-12
    相关资源
    最近更新 更多