字符串连接表现得很疯狂

时间:2014-01-03 05:46:58

标签: python concatenation string-concatenation

我正在尝试将.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输入?

---编辑: 解决了,谢谢! 问题是由

引起的
  

收到的字符串中的换行符

解决方案:请参阅答案

3 个答案:

答案 0 :(得分:3)

你应该改变

print item + str(i)

print item.rstrip() + str(i)

这将删除function中收到的字符串中的所有换行符。


其他一些提示:

  1. 打印数据的更好方法是使用.format方法,例如在你的情况下:

    print '{}{}'.format(item.strip(), i)
    

    如果您的任务更复杂,此方法非常灵活。

  2. 从文件中读取的所有行都是字符串 - 您无需在其上调用str()

答案 1 :(得分:3)

python读取的第一行是this\n,当您向此追加01时,您会获得this\n0this\n1。而在第二行中,您没有在文件末尾添加新行(从您在打印时获得的内容进行推断)。所以附加工作正常。

要从字符串的右端删除\n,您应该使用rstrip('\n')

print (item.rstrip('\n') + str(i))

答案 2 :(得分:0)

在第一个“这个\ n”中,这就是为什么你没有格式化输出。删除新行char后传递参数。