Replace newline in python when reading line for line
<p>I am trying to do a simple parsing on a text in python which I have no issues with in bash using tr '\n' ' '.  Basically to get all of the lines on a single line. In python print line is a bit different from what I understand.  re.sub cannot find my new line because it doesn't exist even though when I print to an output it does.  Can someone explain how I can work around this issue in python?</p>

<p>Here is my code so far:</p>

<pre><code># -*- 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()
</code></pre>

<p>Edit:  I know that "print line," will print without the newline. The issue is that I need to handle these lines both before and after doing operations line by line. My code in shell uses sed, awk and tr to do this.</p>

<p>When you call the <code>print</code> statement, you automatically add a new line. Just add a comma:</p>

<pre><code>print line_2,
</code></pre>

<p>And it will all print on the same line.</p>

<p>Mind you, if you're trying to get all lines of a file, and print them on a single line, there are more efficient ways to do this:</p>

<pre><code>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!
</code></pre>

<p>Alternatively, just join the lines on a string:</p>

<pre><code>everything_on_one_line = ''.join(i.strip() for i in f.readlines())
print everything_on_one_line
</code></pre>

python regex newline python-2.x