这是我的Twitter机器人的代码,它从文本文件中将某些行发送到twitter。 以下代码段应检查该行是空行还是包含内容的行:
...
for line in buff[:]:
if len(line)<=140 and len(line)>0:
print ("Tweeting...")
twitter.update_status(status=line)
time.sleep(3)
with open ('liners.txt', 'w') as tweetfile:
buff.remove(line)
tweetfile.writelines(buff)
elif len(line)=0:
with open ('liners.txt', 'w') as tweetfile:
buff.remove(line)
tweetfile.writelines(buff)
print("Skipped line - Empty line detected")
continue
else:
with open ('liners.txt', 'w') as tweetfile:
buff.remove(line)
tweetfile.writelines(buff)
print ("Skipped line - Char length violation")
continue
...
文本文件在每行之间包含换行符,我想知道为什么换行符if
块变为true
。这里的条件陈述有什么问题?
liners.txt :(第一行是换行符)
诵读困难的恶魔崇拜者把他的灵魂卖给了圣诞老人。你用一块牛排杀死素食吸血鬼。
有一个监狱休息时间,我看到一个侏儒爬上围栏。当他跳下来时,他嘲笑我,我想,这有点居高临下。
答案 0 :(得分:3)
在测试行长度时,换行符仍被视为字符。在检查长度之前,您想要剥离它。从
if len(line)<=140 and len(line)>0:
为:
line = line.strip(r'\n')
if len(line)<=140 and len(line)>0:
事实上,你可以采取真正测试线的额外步骤。一旦你删除了换行符,你就不需要测试长度&gt; 0:
line = line.strip(r'\n')
if line and len(line) <= 140:
...