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)
尝试使用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)
| 归档时间: |
|
| 查看次数: |
3962 次 |
| 最近记录: |