我正在尝试对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来执行此操作。
答案 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', '')