Python特殊字符+换行符

时间:2015-03-23 14:26:15

标签: python regex line break

我有一个.sav文件,其中包含地理坐标和地址,看起来像这样(就像整个文本文件已经充满它并且没有换行符)

"*g    !  –Ѓ›M& 1дj шTњM. 1д‚ »Ѓ›M2 1dѓ ЅЃ›M> 1dШ ОЃ›M? 1ди аЃ›M@ 1й гЃ›Mu 1д‚ є      0000008e92ec333e003e19ec2222 1 1 1 1 1   C I T Y N A M E *"

所以我想制作一个删除特殊字符的小脚本,例如“Ѓ> M&1дjшTњM”上面的示例,然后用每个坐标开始一个新行,看起来像这样:

00000452324235234132123 1 1 1 1 1 C i t y S t r e e t n a m e 46A

我唯一能做的就是打开文本文件并逐行阅读:

import re
a = "Filepath.txt"  
b = re.compile('[^\sa-zA-Z0-9]\S*')
 with open (a) as d:
    while True:
        e = d.read()
        if e:
            re.sub(b, "",e)
        if not e:
            break
    print (e)

有没有人可以帮我解决这个问题? 在此先感谢:)

1 个答案:

答案 0 :(得分:0)

您可以在一个re.sub函数中执行此操作。

>>> s = "*ä-#+ölx 00000452324235234132123 xasf 1 1 1 1 1 C i t y S t r e e t n a m e ---..-.yxaewr 46A*"
>>> re.sub(r'[^\sa-zA-Z0-9]\S*', r'', s).strip()
'00000452324235234132123 xasf 1 1 1 1 1 C i t y S t r e e t n a m e  46A'

[^\sa-zA-Z0-9]匹配除空格以外的所有非单词字符,以下\S*匹配以下零个或多个空格字符。因此它会删除所提到的非单词字符后的所有字符。