Python 获取文件内容并制作列表

Python 获取文件内容并制作列表,python,Python,我是一个新手,尝试将内容放入一个文件中,并从中列出一个列表 当文件为空时,我想打印“没有项目”。当文件中只有一个字符串(例如“香蕉”)时,我想打印“你有xxx”。(xxx是项目名称) 过滤掉空字符串。然后if检查剩余列表是否为空。如果不是空的,则检查长度并相应打印 with open("my_text_file.txt", "r") as f: items = f.read() items = items.replace('\n', '').replace(' ', '')

我是一个新手,尝试将内容放入一个文件中,并从中列出一个列表

当文件为空时,我想打印“没有项目”。当文件中只有一个字符串(例如“香蕉”)时,我想打印“你有xxx”。(xxx是项目名称)

过滤掉空字符串。然后
if
检查剩余列表是否为空。如果不是空的,则检查长度并相应打印

with open("my_text_file.txt", "r") as f:
    items = f.read()
    items = items.replace('\n', '').replace(' ', '')
    items = items.split(",")

    items = [i for i in items if i]
    if items:

        if len(items) == 1:
            print('You have {}'.format(items[0]))

        if len(items) > 1:
            last_item = items[-1]
            items_ex_last_item = items[:-1]
            print("You have " + ', '.join(items_ex_last_item) + " and " + last_item + ".")

    else:
        print("There is no item.")

items=[i for i in items if i]
等同于以下代码:

new_lst = []
for i in items:
    if i:
        new_lst.append(i)
items = new_lst
循环遍历
项目
列表中的所有元素,并检查
i
是否为真。如果是,则它将
append()
将其添加到列表中。最后,它使
引用
新的
,有效地替换了
的旧内容

如果x:
工作(),如何

在布尔运算的上下文中,以及当控制流语句使用表达式时,以下值被解释为false:false、None、所有类型的数字零以及空字符串和容器(包括字符串、元组、列表、字典、集合和冻结集)。所有其他值都被解释为true


您可以使用
next
,它将引发一个
StopIteration
,在这种情况下,它将表示文件为空,并使用元组解包来获取项目,直到最后一个项目,然后根据该项目决定打印什么,例如:

with open('my_file.txt') as fin:
    try:
        *items, last = next(fin).split(',')
        if not items: print('You have', last)
        else: print('You have', ', '.join(items) + ' and ' + last)
    except StopIteration:
        print('No items')
from collections import Counter
from operator import itemgetter

with open('my_file.txt', 'rb') as f:
    res = '\n'.join(
        'You have {} ({})'.format(v, k)
        for k, v in sorted(
            Counter(f.read().strip().split(',')),
            key=itemgetter(1, 0), reverse=True)
    )
    print res if res else 'There is no item'
with open('my_file.txt') as fin:
    try:
        *items, last = next(fin).split(',')
        if not items: print('You have', last)
        else: print('You have', ', '.join(items) + ' and ' + last)
    except StopIteration:
        print('No items')