这是我的问题.
我正在尝试读取文本文件,然后将行转换为浮点数.该文本文件有\n和\t它虽然我不知道如何摆脱它.
我尝试使用,line.strip()但它没有取消它,当我想将这些东西转换为浮动时我得到了一个错误.然后我尝试了,line.strip("\n")但那也没用.我的程序工作正常,当我取出\t并\n从文本文件,但它的任务的一部分得到它与他们合作.
我真的不知道为什么这不起作用.谢谢你的帮助.
aus*_*ard 114
你应该能够使用line.strip('\n')和line.strip('\t').但是这些不会修改line变量......它们只是返回带有\n和\t被剥离的字符串.所以你必须做类似的事情
line = line.strip('\n')
line = line.strip('\t')
Run Code Online (Sandbox Code Playgroud)
这应该适用于从开始和结束中删除.如果你有\n和\t在字符串的中间,你需要做
line = line.replace('\n','')
line = line.replace('\t','')
Run Code Online (Sandbox Code Playgroud)
更换\n和\t与虚无.
Dan*_*son 26
该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()])
Run Code Online (Sandbox Code Playgroud)
如何使用python 正则表达式模式?
import re
f = open('test.txt', 'r')
strings = re.findall(r"\S+", f.read())
Run Code Online (Sandbox Code Playgroud)
而对于你的line.strip()的情况将无法工作,因为Python只删除前导和尾随字符
从Python Docs - 返回删除了前导和尾随字符的字符串副本.如果省略chars或None,则删除空格字符.如果给定而不是None,则字符必须是字符串; 字符串中的字符将从调用此方法的字符串的两端剥离.
您可以使用:
mylist = []
# Assuming that you have loaded data into a lines variable.
for line in lines:
mylist.append(line.strip().split('\t')
Run Code Online (Sandbox Code Playgroud)
获取仅包含所有数据行的字段值的python列表。
pythons csv 库对此很有用。
http://docs.python.org/library/csv.html
CSV = 逗号分隔值,但如果您设置分隔符 = \t,则它也适用于制表符分隔值。