python - 读取 .txt 并用逗号分割列表时出错
问题描述
我正在开发一个从列表中选择随机元素的程序。这些元素存储在一个用逗号分隔的 .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
我该如何解决这个问题?谢谢!
解决方案
expected result = [] len = 0
obtained result = [''] len = 1
这种行为是因为在第二种情况下,您有一个列表,其中包含一个元素。它可能是一个“空”字符串,但它仍然是一个元素。
解决问题的一种方法是:
if not _list_split[0]:
_list_split = []
此条件将检查 的第一个元素_list_split
是否为空字符串,仅当文件确实为空时才会发生。
推荐阅读
- sql - 返回一列,按 ID 显示记录表中每行的最后一个已知值 (MAX DateTime) - SQL
- reflection - 在 F# 中检索记录字段的值时获取可选类型的值
- database - 与内连接合并
- list - Racket - 如何生成一个列表,其中每个元素仅包含结构列表中的某个字段?
- excel - Excel 中另一个工作表中单元格的仅参考值(无背景填充等)
- homebrew - Sentinel Network dVPN Tendermint 测试网,无法获得免费代币
- google-sheets - 尝试使用 apptscript 将谷歌表格同步到谷歌日历,但出现错误
- pandas - 如果单元格值是另一个的子字符串,则熊猫标记两者
- flutter - 带有图标和文本的 Flutter 设计页面视图,可根据滚动自动更改内容
- ionic-framework - #unable 使用 IonTabButton href="" 进入 ion-slide