Python strip()函数出错

Python strip()函数出错,python,python-2.7,strip,Python,Python 2.7,Strip,在我下面的脚本中 def main(): file= open("NCSIDS_ObsExp.txt", "r") for line in file: line= line.split(',') print line file.close() main() 我得到: ['Ashe', '1853282.679', '1673876.66', '1 ', '2 \n'] ['Alleghany', '1963178.059', '16953

在我下面的脚本中

def main():
    file= open("NCSIDS_ObsExp.txt", "r")
    for line in file:
        line= line.split(',')
        print line
    file.close()
main()
我得到:

['Ashe', '1853282.679', '1673876.66', '1 ', '2 \n']
['Alleghany', '1963178.059', '1695301.229', '0 ', '1 \n']
如何摆脱
\n
?我对strip()函数感到非常困惑。我犯了一个错误

def main():
    file= open("NCSIDS_ObsExp.txt", "r")
    for line in file:
        line= line.split(',')
        append= line.strip('n')
        print line
    file.close()
main()
尝试使用
line.strip().split(',')
,这将在迭代期间从行中剥离
\n
。此外,在可能的情况下,通常最好使用打开文件。这是一个上下文管理器,可确保在退出缩进块时正确关闭文件:

In [1]: with open('test.txt', 'rb') as f:
   ...:     for line in f:
   ...:         print line.strip().split(',')
   ...:         
   ...:         
['one']
['two', ' three']
['four', 'five', 'six']
问题在于,当您读取一行时,
\n
字符被解释为该行的一部分,而当您拆分
时,它将拾取最后一项中的换行符:

In [2]: with open('test.txt', 'rb') as f:
   ...:     for line in f:
   ...:         print line.split(',')
   ...:         
   ...:                
['one\n']
['two', ' three\n']
['four', 'five', 'six\n']
因此,为了摆脱它,您可以在行本身上运行
strip()
,这将从行尾删除字符,让您按预期进行拆分

您的错误(在第二个块中)来自:

line= line.split(',')
append= line.strip('n')
您正在分割逗号上的行,该逗号返回一个列表。但是,您尝试剥离列表,这将导致出现
AttributeError
,因为列表没有
strip
方法。另外,
\n
是一个表示新行的特殊字符,因此仅剥离
n
不会产生您想要的效果-您需要剥离整个
\n
字符。如果尝试打印包含以下字符的字符串,则可以看到其“特殊”性质:

In [1]: s = 'A\nnew\nline'

In [2]: s
Out[2]: 'A\nnew\nline'

In [3]: print s
A
new
line

In [4]: s.strip('n')
Out[4]: 'A\nnew\nline'

将来,您可能希望包含特定的错误消息,以便更轻松地解决问题。还要注意,line.strip('n')是不正确的。您可能希望line.strip('\n')@vkontori True将更新以更明确地指出这一点。