带有\n的Python条带

Mal*_*uck 61 python strip

这是我的问题.

我正在尝试读取文本文件,然后将行转换为浮点数.该文本文件有\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与虚无.

  • 请注意,上面“oho”的建议很糟糕,您确实应该使用“\n”而不是“\\n”,因为您想要获取换行符而不是文字“\n”。 (7认同)
  • 我认为您应该像这样对第一个反斜杠进行缩放:`line = line.replace('\\ n','')` (2认同)

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)


sra*_*ara 5

如何使用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,则字符必须是字符串; 字符串中的字符将从调用此方法的字符串的两端剥离.


Job*_*bel 5

您可以使用:

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列表。


rob*_*ing 1

pythons csv 库对此很有用。

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

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