读取.txt并用逗号分隔列表时出错

时间:2019-12-14 16:23:12

标签: python python-3.x

我正在开发一个从列表中选择随机元素的程序。元素存储在以逗号分隔的.txt文件中。

示例:.txt文件包含

spam,eggs,bacon

所以我使用此代码返回包含3个元素的列表。

f = open("list.txt", "r")

_list_raw = f.read()

_list = (str(_list_raw))

_list_split = _list.split(",")

f.close()

return _list_split

_list_split是[垃圾邮件,鸡蛋,培根]

问题是,如果.txt为空,则此函数返回给我len = 1的列表,其中包含元素”。我不明白这里发生了什么。

expected result = [] len = 0
obtained result =[''] len = 1

所以这会引起很多问题,如果我将元素添加到此列表中,则会在.txt中获得类似的内容

,eggs,bacon

我该如何解决?谢谢!

2 个答案:

答案 0 :(得分:0)

expected result = [] len = 0
obtained result = [''] len = 1

此行为是因为在第二种情况下,您具有一个在其中包含元素的列表。它可能是一个“空”字符串,但仍然是一个元素。

解决问题的一种方法是:

if not _list_split[0]:
    _list_split = []

此条件将检查_list_split的第一个元素是否为空字符串,只有在文件确实为空时才会发生。

答案 1 :(得分:0)

问题出在_list = (str(_list_raw))行中,如果文件为空,则您明确创建一个将插入列表的空字符串,请尝试使用上面的代码:

try:
    with open("list.txt", "r") as f:
        _list_raw = f.read()    
except:
    return []
else:
    return _list_raw.split(",") if _list_raw else []
相关问题