带 n 的 Python 条

这是我的问题。

我试图读取一个文本文件,然后将行转换为浮点数。文本文件有 \n\t在它虽然我不知道如何摆脱它。

我尝试使用 line.strip(),但它没有取下来,我得到了一个错误,当我想转换的东西为浮动。然后我尝试了 line.strip("\n"),但也没有工作。当我从文本文件中取出 \t\n时,我的程序工作得很好,但这是使它们工作的任务的一部分。

我真不知道为什么这样不行,谢谢你的帮助。

597728 次浏览

Pythons csv 库对此很有帮助。

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

CSV = 逗号分隔的值,但是如果设置分隔符 = t,那么它也适用于制表符分隔的值。

你应该能够使用 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

通常,取决于你阅读行的方式为了从 myline 中去掉 n, 你可以用我的台词[ :-1] 因为 n 是 myline 的最后一个字符。

For the '\t' you can use replace() or strip()

If you're trying to convert lines of floats separated by tab characters, then just float(line) will try to convert the whole line into one float, which will fail if there's more than one. Using strip to get rid of leading and trailing whitespace isn't going to help that fundamental problem.

也许你需要 split的每一行成片,并做一些与每一块?

使用 python 正则表达式模式如何?

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

而对于 Line Strip ()的情况,则不会起作用,因为 Python 只删除前导字符和尾随字符

巨蟒文档返回字符串的一个副本与 去掉了开头和尾部的字符。如果省略了字符或“无”,则删除空格字符。如果给定而不是 Nothing,字符必须是字符串; 字符串中的字符将从调用此方法的字符串的两端剥离。

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()])

你可使用:

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

得到一个只包含所有数据行的字段值的 python 列表。