这是我的问题。
我正在尝试读取文本文件,然后将这些行转换为浮点数。文本文件中包含\n
和\t
,但我不知道如何摆脱它。
我尝试使用line.strip()
但它没有将其取消,当我想将这些内容转换为浮点数时出现错误。然后我尝试line.strip("\n")
,但这也不起作用。当我从文本文件中取出\t
和\n
时,我的程序运行正常,但这是让它与它们一起工作的任务的一部分。
我真的不知道为什么这不起作用。谢谢你的帮助。
答案 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)
答案 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()