带有\ n的Python条带

时间:2012-02-19 07:07:27

标签: python strip

这是我的问题。

我正在尝试读取文本文件,然后将这些行转换为浮点数。文本文件中包含\n\t,但我不知道如何摆脱它。

我尝试使用line.strip()但它没有将其取消,当我想将这些内容转换为浮点数时出现错误。然后我尝试line.strip("\n"),但这也不起作用。当我从文本文件中取出\t\n时,我的程序运行正常,但这是让它与它们一起工作的任务的一部分。

我真的不知道为什么这不起作用。谢谢你的帮助。

7 个答案:

答案 0 :(得分:99)

您应该可以使用line.strip('\n')line.strip('\t')。但是这些不会修改line变量......它们只返回带有\n\t的字符串。所以你必须做像

这样的事情
line = line.strip('\n')
line = line.strip('\t')

这应该适用于从开始和结束中删除。如果您在字符串中间有\n\t,则需要执行

line = line.replace('\n','')
line = line.replace('\t','')

用虚无替换\n\t

答案 1 :(得分:21)

strip()方法默认删除空格,因此无需使用'\ t'或'\ n'等参数调用它。但是,Python中的字符串是不可变的,无法修改,即line.strip()调用不会更改line对象。结果是一个由调用返回的新字符串。

如前所述,如果您从输入文件中发布了一个示例,那将会有所帮助。如果每行上有多个号码,则strip()不是要使用的功能。相反,你应该使用split(),这也是一个字符串方法。

总而言之,假设每行包含由空格分隔的多个浮点数,并且您想要构建所有数字的列表,您可以尝试以下操作:

floats = []
with open(filename) as f:
    for line in f:
        floats.extend([float(number) for number in line.split()])

答案 2 :(得分:5)

如何使用python regex模式?

import re
f = open('test.txt', 'r')
strings = re.findall(r"\S+", f.read())

因为你的line.strip()的情况不起作用,因为Python只删除了前导和尾随字符

  

Python Docs - 返回字符串的副本,其中删除了前导字符和尾随字符。如果省略chars或None,则删除空格字符。如果给定而不是None,则字符必须是字符串;字符串中的字符将从调用此方法的字符串的两端剥离。

答案 3 :(得分:1)

pythons csv库对此有好处。

http://docs.python.org/library/csv.html

CSV =逗号分隔值,但如果设置分隔符= \ t,则它也适用于制表符分隔值。

答案 4 :(得分:1)

如果你试图转换由制表符分隔的浮点数行,那么只有float(line)会尝试将整行转换为一个浮点数,如果存在多个浮点数则会失败。使用strip摆脱前导和尾随空格不会有助于解决这个根本问题。

也许你需要split每一行成片并对每件作品做点什么?

答案 5 :(得分:1)

您可以使用:

mylist = []
# Assuming that you have loaded data into a lines variable. 
for line in lines:
    mylist.append(line.strip().split('\t')

获取一个python列表,其中只包含所有数据行的字段值。

答案 6 :(得分:0)

通常,根据你读取线条的方式,为了摆脱myline的\ n, 你可以拿myline [: - 1] 因为\ n是myline的最后一个字符。

对于'\ t',您可以使用replace()或strip()