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将更新以更明确地指出这一点。