在读取行的行时替换python中的换行符

时间:2016-09-19 13:43:36

标签: python regex newline python-2.x

我正在尝试对python中的文本进行简单的解析,我在使用tr' \ n'的bash中没有任何问题。 ' &#39 ;.基本上是为了让所有的线都在一条线上。在python中,打印线与我的理解有点不同。 re.sub无法找到我的新行,因为即使我打印到输出它也不存在。有人可以解释我如何在python中解决这个问题吗?

到目前为止,这是我的代码:

# -*- iso-8859-1 -*-
import re
def proc():
    f= open('out.txt', 'r')
    lines=f.readlines()
    for line in lines:
        line = line.strip()
        if '[' in line:
            line_1 = line
            line_1_split = line_1.split(' ')[0]
            line_2 = re.sub(r'\n',r' ', line_1_split)
            print line_2
proc()

编辑:我知道"打印线,"将在没有换行符的情况下打印。问题是我需要在逐行操作之前和之后处理这些行。我在shell中的代码使用sed,awk和tr来执行此操作。

4 个答案:

答案 0 :(得分:1)

您可以直接写入stdout以避免print的自动换行:

from sys import stdout
stdout.write("foo")
stdout.write("bar\n")

这将在一行上打印foobar

答案 1 :(得分:1)

当您调用print语句时,会自动添加新行。只需添加一个逗号:

print line_2,

它将全部打印在同一行。

请注意,如果您尝试获取文件的所有行并将其打印在一行上,则可以采用更有效的方法:

with open('out.txt', 'r') as f:
    lines = f.readlines()
    for line in lines:
        line = line.strip()
        # Some extra line formatting stuff goes here
        print line, # Note the comma!

或者,只需加入字符串上的行:

everything_on_one_line = ''.join(i.strip() for i in f.readlines())
print everything_on_one_line

答案 2 :(得分:1)

使用with可确保您在迭代后关闭文件。

迭代保存内存,不加载整个文件。

rstrip()最后删除了换行符。

组合:

with open('out.txt', 'r') as f:
    for line in f:
        print line.rstrip(),

答案 3 :(得分:0)

使用replace()方法。

file = open('out.txt', 'r')
data = file.read()
file.close()
data.replace('\n', '')