Python:“split()”忽略“\ n”

时间:2014-03-04 15:27:32

标签: python

我有一个文本文件myfile.txt。该文件的第一行是foo bar。我想将这一行分成两个相应的单词。这是我的代码:

with open('myfile.txt', 'r') as f:
    line = f.readline()
    words = line.split(' ')
    word1 = words[0]
    word2 = words[1]
    print words
    print word1
    print word2

输出是:

['foo', 'bar\n']
foo
bar

我的问题是,为什么split()似乎从第二个单词中删除\n,即使我只是要求根据空白字符进行拆分?

2 个答案:

答案 0 :(得分:5)

split()并未消除\n。会发生什么是print只是将其打印为换行符。

使用repr()查看:

In [3]: word2 = 'bar\n'

In [4]: print word2
bar


In [5]: print repr(word2)
'bar\n'

答案 1 :(得分:2)

  

为什么split()似乎从第二个单词中消除\ n,即使我只是要求根据空白字符进行拆分?

事实上,这不是正在发生的事情。致split(' ')的电话不会删除'\n'

>>> line = 'foo bar\n'
>>> line
'foo bar\n'
>>> line.split(' ')
['foo', 'bar\n']
>>> line.split(' ')[1]
'bar\n'
>>>>

当您打印'bar\n'时,\n被解释为换行符。

>>> print line.split(' ')[0]
foo
>>> print line.split(' ')[1]
bar

>>>

请注意bar之后还有一行,但foo之后没有。