我正在开发一个从列表中选择随机元素的程序。元素存储在以逗号分隔的.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
我该如何解决?谢谢!
答案 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 []