On 9/12/05, <b class="gmail_sendername">Tom Tucker</b> &lt;<a href="mailto:tktucker@gmail.com">tktucker@gmail.com</a>&gt; wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Tutor,<br>
<br>
Good evening!&nbsp;&nbsp;&nbsp; The goal is to parse a simple file and grab column one.&nbsp; <br>
Then print each value horizontally separated by a comma. <br>
Why is Python adding a space padding between each value?&nbsp;&nbsp; Please see below. <br>
Thanks ahead of time.<br>
<br>
<br>
<br>
<br>
INPUT_FILE # unwanted lines removed<br>
################################<br>
5555&nbsp;&nbsp;&nbsp; <a href="mailto:user@bdomain.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">user@bdomain.com<img class="TargetAlertIcon" src="chrome://targetalert/content/skin/new.png"></a>&nbsp;&nbsp;&nbsp; blah&nbsp;&nbsp;&nbsp; blah
<br>
1111&nbsp;&nbsp;&nbsp; <a href="mailto:user@cdomain.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">user@cdomain.com<img class="TargetAlertIcon" src="chrome://targetalert/content/skin/new.png"></a>&nbsp;&nbsp;&nbsp; blah&nbsp;&nbsp;&nbsp; blah
<br>
3333&nbsp;&nbsp;&nbsp; <a href="mailto:user@adomain.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">user@adomain.com<img class="TargetAlertIcon" src="chrome://targetalert/content/skin/new.png"></a>&nbsp;&nbsp;&nbsp; blah&nbsp;&nbsp;&nbsp; blah
<br>
4444&nbsp;&nbsp;&nbsp; <a href="mailto:user@edomain.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">user@edomain.com<img class="TargetAlertIcon" src="chrome://targetalert/content/skin/new.png"></a>&nbsp;&nbsp;&nbsp; blah&nbsp;&nbsp;&nbsp; blah
<br>
<br>
<br>
OUTPUT DESIRED<br>
##################<br>
5555,1111,3333,4444<br>
<br>
<br>
SCRIPT<br>
#########<br>
import re<br>
<br>
input_file = open('/tmp/file','r')<br>
number_match = re.compile('^\d+\s+\w+\@')<br>
for line in input_file.readlines():<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if number_match.match(line):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line = re.split('\s+', line)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print line[0],<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;,&quot;,<br>
<br>
<br>
OUTPUT GENERATED<br>
####################<br>
5555 , 1111 ,&nbsp; 3333 , 4444 ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
<br>
</blockquote></div><br>
To add to Danny's posting, I recently had to stream out an unknown list
of values from a database, something like what you are doing.&nbsp; I
created a class that formats the lines like you want and writes them
out when the line gets close the the maximum length.<br>
<br>
<span style="font-family: courier new,monospace;">class Line:</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; length = 72</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; seperator = ', '</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; def __init__(self):</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.reset()</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; def reset(self):</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.contents = ''</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; def __str__(self):</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return str(self.contents)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; def __len__(self):</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return len(self.contents)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; def __add__(self, other):</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o = str(other)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l = len(o)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s = len(self.seperator)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if len(self) + l + s &gt; self.length:</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.flush()</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if self.contents:</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.contents += self.seperator</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.contents += str(other)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return self</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; def flush(self):</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if self.contents:</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self._print(self.contents)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.reset()</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; def _print(self, line):</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"></span><span style="font-family: courier new,monospace;"></span><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print line</span><br style="font-family: courier new,monospace;">

<br>For your purposes, you would want to change the separator to just
','.&nbsp; Then you would just create an instance and add strings to it.<br>
<span style="font-family: courier new,monospace;">formatted_line = Line()</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">for line in input_file.readlines():<br>
&nbsp;&nbsp;&nbsp; if number_match.match(line):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line = re.split(r'\s+', line)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formatted_line += line[0]<br>
else:<br>
&nbsp;&nbsp;&nbsp; formatted_line.flush()&nbsp; # clear anything left to print<br clear="all">
</span><br>
HTH,<br>
&nbsp; -Arcege<br>-- <br>There's so many different worlds,<br>So many different suns.<br>And we have just one world,<br>But we live in different ones.