R中不同符号的匹配坐标
Matching coordinates with different sign in R
我正在通过下载其 html 代码来抓取网络地图,我想通过匹配正则表达式来提取某些点的坐标。我使用以下代码实现了提取大部分坐标:
library(stringr)
unique(str_extract_all(doc,"\[[[:digit:]]+[.][[:digit:]]+[,][[:punct:]][[:digit:]]+[.][[:digit:]]+\]")[[1]])
此代码提取纬度为负但有时为负的情况。我需要指定符号“[”来提取点但没有地图边界。也就是说,我需要获得类似
的东西
[10.6302565,-74.9131161]
但我需要包含
这样的结果
[-10.6302565,-74.9131161]
如果有你的帮助,我将不胜感激。谢谢。
附加
我也包括doc
。在这种情况下,我有正纬度:
i<-"https://www.google.com/maps/d/embed?mid=1YhVS6Z--LIc5k9rstJ24tYcb-Nc"
doc<-readLines(url(i))
doc<-doc[7]
doc<-iconv(doc,"latin1","ASCII","")
在这种情况下,我有负纬度:
i<-"https://www.google.com/maps/d/embed?mid=1vq9uMa8L0PxnrhG-m3z3Jt-HDh4"
doc<-readLines(url(i))
doc<-doc[7]
doc<-iconv(doc,"latin1","ASCII","")
您可以使用
"\[-?\d+[.]\d+,-?\d+[.]\d+\]"
参见regex demo。请注意,在 \[
之后添加的 -?
(匹配 1 或 0 个减号)和 ,
之后的 [[:punct:]]
替换为 -?
。我还删除了不必要的转义符号。
> library(stringr)
> i<-"https://www.google.com/maps/d/embed?mid=1YhVS6Z--LIc5k9rstJ24tYcb-Nc"
> doc<-readLines(url(i))
> doc<-doc[7]
> unique(str_extract_all(doc,"\[-?\d+[.]\d+,-?\d+[.]\d+\]")[[1]])
[1] "[10.6302565,-74.9131161]" "[10.8632551,-74.7769001]"
[3] "[10.9827508,-74.783735]" "[10.9419975,-74.7826532]"
我正在通过下载其 html 代码来抓取网络地图,我想通过匹配正则表达式来提取某些点的坐标。我使用以下代码实现了提取大部分坐标:
library(stringr)
unique(str_extract_all(doc,"\[[[:digit:]]+[.][[:digit:]]+[,][[:punct:]][[:digit:]]+[.][[:digit:]]+\]")[[1]])
此代码提取纬度为负但有时为负的情况。我需要指定符号“[”来提取点但没有地图边界。也就是说,我需要获得类似
的东西[10.6302565,-74.9131161]
但我需要包含
这样的结果[-10.6302565,-74.9131161]
如果有你的帮助,我将不胜感激。谢谢。
附加
我也包括doc
。在这种情况下,我有正纬度:
i<-"https://www.google.com/maps/d/embed?mid=1YhVS6Z--LIc5k9rstJ24tYcb-Nc"
doc<-readLines(url(i))
doc<-doc[7]
doc<-iconv(doc,"latin1","ASCII","")
在这种情况下,我有负纬度:
i<-"https://www.google.com/maps/d/embed?mid=1vq9uMa8L0PxnrhG-m3z3Jt-HDh4"
doc<-readLines(url(i))
doc<-doc[7]
doc<-iconv(doc,"latin1","ASCII","")
您可以使用
"\[-?\d+[.]\d+,-?\d+[.]\d+\]"
参见regex demo。请注意,在 \[
之后添加的 -?
(匹配 1 或 0 个减号)和 ,
之后的 [[:punct:]]
替换为 -?
。我还删除了不必要的转义符号。
> library(stringr)
> i<-"https://www.google.com/maps/d/embed?mid=1YhVS6Z--LIc5k9rstJ24tYcb-Nc"
> doc<-readLines(url(i))
> doc<-doc[7]
> unique(str_extract_all(doc,"\[-?\d+[.]\d+,-?\d+[.]\d+\]")[[1]])
[1] "[10.6302565,-74.9131161]" "[10.8632551,-74.7769001]"
[3] "[10.9827508,-74.783735]" "[10.9419975,-74.7826532]"