如何清除表格中奇数位置逗号,仅保留偶数位置逗号?
用正则表达式一键转换几何坐标格式
核心思路
你要做的其实就是把每组坐标对里的逗号换成空格,只保留分隔不同坐标对的逗号。比如把106.812271, -6.361551, 106.812111, -6.361339改成106.812271 -6.361551, 106.812111 -6.361339,完全不用拆分再拼接,正则表达式一步就能搞定。
正则匹配与替换规则
匹配模式
(\d+\.?\d*),\s*(-?\d+\.?\d*)
替换内容
$1 $2
简单解释
(\d+\.?\d*):捕获第一个坐标(兼容整数或小数,比如106或者106.812271),记为分组$1,\s*:匹配坐标对之间的逗号,以及逗号后面的任意数量空格(-?\d+\.?\d*):捕获第二个带负号的坐标(比如-6.361551),记为分组$2
替换时直接把「逗号+空格」换成「空格」,将两个坐标合并成一组。
不同场景的使用方法
1. Python代码批量处理
如果用Python处理字符串,直接调用re.sub即可:
import re # 示例几何字段字符串 geometry_str = "POLYGON (( 106.812271, -6.361551, 106.812111, -6.361339, ... ))" # 执行正则替换 formatted_str = re.sub(r'(\d+\.?\d*),\s*(-?\d+\.?\d*)', r'\1 \2', geometry_str) print(formatted_str)
2. Excel/Google Sheets 批量替换
在表格工具中操作:
- 选中需要处理的单元格区域
- 按
Ctrl+H打开替换窗口,点击「更多」并勾选「使用通配符」 - 查找内容填入:
([0-9.]@), *(-[0-9.]@) - 替换为填入:
\1 \2 - 点击「全部替换」完成转换
3. 文本编辑器(VS Code/Sublime)
处理纯文本文件时:
- 打开文件后按
Ctrl+F切换到替换模式 - 点击正则表达式图标(
.*样式按钮) - 查找内容填入:
(\d+\.?\d*),\s*(-?\d+\.?\d*) - 替换为填入:
$1 $2 - 点击「全部替换」即可批量转换所有坐标对
特殊情况适配
如果坐标包含科学计数法(比如1.06812271e+02),可以使用下面的正则,替换内容改为$1 $3:
([+-]?\d+\.?\d*([eE][+-]?\d+)?),\s*([+-]?\d+\.?\d*([eE][+-]?\d+)?)
内容的提问来源于stack exchange,提问作者james iskandar
相关产品推荐
相关产品推荐

