以下是我拥有的数据示例:
Allt Uisg an t-Sidhein,Highland 57.22N 04.29W NH613171
Alltwalis,Sir Gaerfyrddin (Carmarthenshire) 51.95N 04.27W SN4431
Alltwen,Castell-nedd Phort Talbot (Neath Port Talbot) 51.71N 03.85W SN7203
Allt-yr-yn,Casnewydd (Newport) 51.58N 03.02W ST2988
我有44000行这些数据(英国所有城镇)。 我想以CSV格式对其进行格式化,以便将其导入数据库。
这是示例数据在格式化后应该看起来的样子(用逗号分隔的数据项):
Allt Uisg an t-Sidhein,Highland,57.22N,04.29W,NH613171
Alltwalis,Sir Gaerfyrddin (Carmarthenshire),51.95N,04.27W,SN4431
Alltwen,Castell-nedd Phort Talbot (Neath Port Talbot),51.71N,03.85W,SN7203
Allt-yr-yn,Casnewydd (Newport),51.58N,03.02W,ST2988
所以现在我需要提出一个正则表达式来匹配所有行上第一个数字(北坐标)之前的每个空格,这样我就可以用逗号替换它。
任何信息或帮助将不胜感激。
答案 0 :(得分:3)
您可以在此处使用肯定前瞻,这适用于您提供的数据:
在Sublime Text 2中:使用 Ctrl + H 打开搜索和替换,启用正则表达式
Find What: +(?=\d+\.\d+[NSEW]|[A-Z]{2}\d{4,})
Replace With: ,
答案 1 :(得分:2)
答案 2 :(得分:1)
使用一些类似的捕获组:
(.+) (\d{2}\.\d{2}[NS]) (\d{2}\.\d{2}[EW]) ([A-Z]{2}\d{4,})
然后您可以根据需要格式化它(在您的情况下使用逗号):
$1,$2,$3,$4
答案 3 :(得分:1)
您可以尝试这样的事情:
(?=\d{2}\.\d{2}[NEWS])| (?=[A-Z]{2}\d+)
(开头有空格)
答案 4 :(得分:1)
我会这样做:
import re
l = "Allt Uisg an t-Sidhein,Highland 57.22N 04.29W NH613171"
re.sub(".(\s)[0-9]", ",", l, 2)
答案 5 :(得分:1)
好消息是 sublimetext2 支持\K
选项,
<强>模式:强>
.*\K (\S+) (\S+) (\S+)$
<强>替换强>
,\1,\2,\3
它使用,
<强>之前:强>
<强>后:强>