【发布时间】:2013-05-16 19:26:22
【问题描述】:
我有这段代码可以将一些字符串打印到文本文件中,但我需要 python 忽略每个空项,因此它不会打印空行。
我写了这段代码,很简单,但应该可以解决问题:
lastReadCategories = open('c:/digitalLibrary/' + connectedUser + '/lastReadCategories.txt', 'w')
for category in lastReadCategoriesList:
if category.split(",")[0] is not "" and category is not None:
lastReadCategories.write(category + '\n')
print(category)
else: print("/" + category + "/")
lastReadCategories.close()
我看不出它有什么问题,但是,python 不断将空项目打印到文件中。所有类别都用这种表示法编写:“category,timesRead”,这就是为什么我要求python查看逗号之前的第一个字符串是否不为空。然后我看看整个项目是否不为空(不是无)。从理论上讲,我想它应该可以工作,对吧?
P.S.:我已经尝试询问 if 来检查 'category' 是否不是 "" 并且不是 " ",仍然是相同的结果。
【问题讨论】:
-
is not ""是可疑的。is检查对象身份,而不是对象相等性。试试if ... != "" -
你在循环
lastReadCategoriesList;它的定义是什么? -
它是一个列表,其中包含类似“category,timesRead”这样的项目,其中“timesRead”是一个被转换成字符串的整数。由于某种原因,我仍然无法确定,一些空项目正在添加到列表中。
-
@millimoose,它仍然会添加空项目,即使使用 != "" 和 != " "
-
@millimoose is not "" 将在 CPython 中工作,但这是解释器的一个怪癖,而不是语言规范的一部分。以下是更多信息:stackoverflow.com/questions/1392433/…