删除前导和尾随空格但不在单词之间

时间:2014-07-24 06:11:04

标签: python

我正在将数据库表转换为带有'|'的CSV文件作为分隔符。

我有一个数据库表的输出,如: -

表: -

|London          |       Jul  9 2014  1:21PM  |john         |
|New York        |       Jul  9 2014  1:21PM  |peter        |
|New Zeland      |       Jul  9 2014  1:21PM  |Mr. Jones    |

我想删除尾随空格并将其格式化为: -

|London|Jul  9 2014  1:21PM|john|
|New York|Jul  9 2014  1:21PM|peter|
|New Zeland|Jul  9 2014  1:21PM|Mr. Jones|

我正在使用以下代码

f = open(csv_file,'w')
for lines in Table:
    lines = lines.replace(' ','')
    f.write(lines)

f.close

但是在文件中我在csv文件中得到类似的内容: -

|London|Jul920141:21PM|john|
|NewYork|Jul920141:21PM|peter|
|NewZeland|Jul920141:21PM|Mr.Jones|

如何删除不需要的空格,同时保留单词之间的on?

2 个答案:

答案 0 :(得分:6)

在条形图上拆分,然后使用str.strip()删除结果:

with open(csv_file, 'w') as f:
    for line in table:
        line = '|'.join([c.strip() for c in line.split('|')])
        f.write(line + '\n')

我在这里打开输出文件作为上下文管理器;在这种情况下,无需致电f.close()(尽管您的代码实际上并未调用 f.close())。您还需要添加\n个换行符(因为您只是删除了空格)。

演示:

>>> table = '''\
... |London          |       Jul  9 2014  1:21PM  |john         |
... |New York        |       Jul  9 2014  1:21PM  |peter        |
... |New Zeland      |       Jul  9 2014  1:21PM  |Mr. Jones    |
... '''.splitlines()
>>> for line in table:
...     line = '|'.join([c.strip() for c in line.split('|')])
...     print line
... 
|London|Jul  9 2014  1:21PM|john|
|New York|Jul  9 2014  1:21PM|peter|
|New Zeland|Jul  9 2014  1:21PM|Mr. Jones|

答案 1 :(得分:0)

您可以使用regex

import re
f = open(csv_file,'w')
for lines in Table:
    lines = re.sub(r' *\| *','|',lines)  # Remove spaces before and after the pipe character
    f.write(lines)
f.close()