我正在尝试将.txt列表中的每个单词加入字符串eg{ 'word' + str(1) = 'word1' }
使用此代码:
def function(item):
for i in range(2):
print item + str(i)
with open('dump/test.txt') as f:
for line in f:
function(str(line))
我只会使用一个只包含两个单词的txt文件('this','that')。 我得到的是:
this
0
this
1
that0
that1
我的期待:
this0
this1
that0
that1
如果我只使用function('this')
和function('that')
,它的工作正常,但是为什么它不适用于txt输入?
---编辑: 解决了,谢谢! 问题是由
引起的收到的字符串中的换行符
解决方案:请参阅答案
答案 0 :(得分:3)
你应该改变
print item + str(i)
到
print item.rstrip() + str(i)
这将删除function
中收到的字符串中的所有换行符。
其他一些提示:
打印数据的更好方法是使用.format
方法,例如在你的情况下:
print '{}{}'.format(item.strip(), i)
如果您的任务更复杂,此方法非常灵活。
从文件中读取的所有行都是字符串 - 您无需在其上调用str()
。
答案 1 :(得分:3)
python读取的第一行是this\n
,当您向此追加0
和1
时,您会获得this\n0
和this\n1
。而在第二行中,您没有在文件末尾添加新行(从您在打印时获得的内容进行推断)。所以附加工作正常。
要从字符串的右端删除\n
,您应该使用rstrip('\n')
print (item.rstrip('\n') + str(i))
答案 2 :(得分:0)
在第一个“这个\ n”中,这就是为什么你没有格式化输出。删除新行char后传递参数。