gpt4 book ai didi

regex - 如何在 unix 或 R 或​​ grep 或 awk 中以以下格式拆分街道地址?

转载 作者:行者123 更新时间:2023-12-02 08:27:42 27 4
gpt4 key购买 nike

我有一个包含意大利街道名称和地址的文件,我必须将地址列拆分为街道名称和街道编号。问题是地址有两个或三个字符串,然后数字或数字有时也有字符,例如 15/a其中一些的地址类似于 12-Maggio 23,我的拆分应该是第一列 12-maggio 和第二列 23。

文件格式如下

Street.adress
Falcone N. 1
Fortunato Giustino 2
Pisacane 3
Fabrizio De Andre' 8
S. Satta 7
Agnesi 16
Volturno Cigni 80
Montepenice 6
Cucchiari 15
Molinetto Di Lorenteggio 15/T 7
Don Minzoni 15
Senigallia 4
Milano 38/A
L. Da Vinci 13/A
27-Novembre 9

输出应该在 2 个单独的列中

Falcone N.  1
Fortunato Giustino 2
Pisacane 3
Fabrizio De Andre' 8
S. Satta 7
Agnesi 16
Volturno Cigni 80
Montepenice 6 6
Cucchiari 15
Molinetto Di Lorenteggio 15/T 7
Don Minzoni 15
Senigallia 4
Milano 38/A
L. Da Vinci 13/A
27-Novembre 9

我怎样才能做到这一点,我已经尝试了 excel 公式并且也未拆分但不起作用。我已经在 R 中尝试了以下代码,但它失败了,那么我该怎么做呢?

for (i in 1:nrow (df)) {

new_df [i,"Street.Name"] <- unlist(strsplit (df[["Street.Addresses"]], " ")[i])[1]
new_df [i,"Street.Number"] <- paste (unlist(strsplit (df[["Street.Addresses"]], " ")[i])[-1], collapse = " ")

}

尝试过

df <- gsub("$([0-9]+ +)?(.*)", "\\1\t\\2", df)

没有任何作用。任何线索

最佳答案

此正则表达式与 gsub()strsplit() 相结合,适用于您提供的数据。

这里的技巧是我先在我想分割字符串的位置插入一个\t,然后用strsplit()\t 作为分隔符。

x <- read.table(sep = "\n",
header = TRUE,
quote = "\"",
text = "Street.adress
Falcone N. 1
Fortunato Giustino 2
Pisacane 3
Fabrizio De Andre' 8
S. Satta 7
Agnesi 16
Volturno Cigni 80
Montepenice 6
Cucchiari 15
Molinetto Di Lorenteggio 15/T 7
Don Minzoni 15
Senigallia 4
Milano 38/A
L. Da Vinci 13/A
27-Novembre 9"
)


pattern <- "(.*?) +(\\d+.*)"

z <- gsub(pattern, "\\1\t\\2", x[[1]])
unlist(
strsplit(z, "\t")
)

结果:

 [1] "Falcone N."               "1"                       
[3] "Fortunato Giustino" "2"
[5] "Pisacane" "3"
[7] "Fabrizio De Andre'" "8"
[9] "S. Satta" "7"
[11] "Agnesi" "16"
[13] "Volturno Cigni" "80"
[15] "Montepenice" "6"
[17] "Cucchiari" "15"
[19] "Molinetto Di Lorenteggio" "15/T 7"
[21] "Don Minzoni" "15"
[23] "Senigallia" "4"
[25] "Milano" "38/A"
[27] "L. Da Vinci" "13/A"
[29] "27-Novembre" "9"

附言。编辑答案以处理输入数据中有引号 ' 的事实。为了解决这个问题,您必须将 quote = "\"" 设置为 read.table() 的参数,否则将跳过某些行。

关于regex - 如何在 unix 或 R 或​​ grep 或 awk 中以以下格式拆分街道地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30562957/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com