首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用regex从专有文本格式获取地理十进制坐标

使用regex从专有文本格式获取地理十进制坐标
EN

Stack Overflow用户
提问于 2017-08-27 11:31:55
回答 3查看 159关注 0票数 2

仅使用带有regex支持的Notepad++,我想从一个表示地理坐标的txt文件中提取一些数据,并像这样组织输出:

  • -123456789变成-123.456789
  • 123456789变成123.456789
  • -23456789变成-23.456789
  • 56789变成0.056789
  • -89变成-0.000089

尝试过:(-?)([0-9]*)([0-9]{6}),但是当输入小于6位时失败

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-27 12:04:29

要做到这一点,您需要在notepad++中执行两个步骤。首先,让我们看一下正则表达式:

代码语言:javascript
复制
(?<sign>-?)(?<first>\d+(?=\d{6}))?(?<last>\d+)

在组中捕获所需的部分。

说明:(如果愿意,您可能会丢失指定的分组)

代码语言:javascript
复制
(?<sign>-?)                    # read the '-' sign
(?<first>\d+(?=\d{6}))?        # read as many digits as possible,
                               # leaving 6 digits at the end.
(?<last>\d+)                   # read the remaining digits.

请参阅regex101.com

如何在notepad++中使用这个?使用两步搜索和替换:

代码语言:javascript
复制
(-?)(\d+(?=\d{6}))?(\d+)

代之以:

代码语言:javascript
复制
\1(?2\2.:0.)000000\3           # copy sign, if group 2 contains any
                               # values, copy them, followed by '.'.
                               # If not show a '0.'
                               # Print 6 zero's, followed by group 3.

接下来,替换多余的零。

代码语言:javascript
复制
\.(0+(?=\d{6}\b))(\d{6})       # Replace the maximum number of zero's
                               # leaving 6 digits at the end.

代之以:

代码语言:javascript
复制
.\2
票数 0
EN

Stack Overflow用户

发布于 2017-08-27 12:00:58

您可以通过三个步骤来完成:

  • Step1 :将:(-?)\b(\d{1,6})\b替换为\10000000\2
  • Step2 :将:(-?)(\d{0,})(\d{6})替换为\1\2.\3
  • Step3 :将:0{2,}\.替换为0.

这个想法很简单:

  • 在第一步中,将所有小于6长度的数字与之前的6个零组合起来,以确保长度应大于6。
  • 在第二步中,把圆点放在第6位之前。
  • 第三步用一个替换点前的所有多个零。

最后,输出

代码语言:javascript
复制
-123.456789 
123.456789
-23.456789
0.056789
-0.000089

检查以下三个步骤:

票数 0
EN

Stack Overflow用户

发布于 2017-08-27 13:00:06

您可以使用一个可用于Python脚本的notepad++插件:

代码语言:javascript
复制
editor.rereplace('(\d+)', lambda m: ('%f' % (float(m.group(1))/1000000)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45904494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档