Python strip()函数出错

use*_*223 3 python strip python-2.7

在我的脚本下面

def main():
    file= open("NCSIDS_ObsExp.txt", "r")
    for line in file:
        line= line.split(',')
        print line
    file.close()
main()
Run Code Online (Sandbox Code Playgroud)

我明白了:

['Ashe', '1853282.679', '1673876.66', '1 ', '2 \n']
['Alleghany', '1963178.059', '1695301.229', '0 ', '1 \n']
Run Code Online (Sandbox Code Playgroud)

我怎么摆脱\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()
Run Code Online (Sandbox Code Playgroud)

Roc*_*key 5

尝试使用line.strip().split(','),这将\n在迭代期间从行中剥离.此外,通常最好with在可能的情况下打开文件.这是一个上下文管理器,可确保在退出缩进块时正确关闭文件:

In [1]: with open('test.txt', 'rb') as f:
   ...:     for line in f:
   ...:         print line.strip().split(',')
   ...:         
   ...:         
['one']
['two', ' three']
['four', 'five', 'six']
Run Code Online (Sandbox Code Playgroud)

问题在于,当您读取一行时,该\n字符将被解释为该行的一部分,并且当您split在最后一个项目中拾取换行符时:

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']
Run Code Online (Sandbox Code Playgroud)

因此,为了摆脱它,你可以strip()在线本身上运行,这将从行的末尾删除字符,让你按预期分割.

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

line= line.split(',')
append= line.strip('n')
Run Code Online (Sandbox Code Playgroud)

您正在分割逗号上的行,该行返回一个列表.但是,然后您尝试剥离列表,这将导致AttributeError因为列表没有strip方法.另外,\n是一个表示新行的特殊字符,因此剥离n不会产生您想要的效果 - 您需要剥离整个\n字符.如果您尝试print使用包含该字符的字符串,您可以看到它的"特殊"性质:

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'
Run Code Online (Sandbox Code Playgroud)