R 如何从给定文本中提取地址详细信息?

R 如何从给定文本中提取地址详细信息?,r,pattern-matching,pattern-recognition,R,Pattern Matching,Pattern Recognition,如何从下面的文本中提取地址(39/4B…….700025)而不\r\n Text<-"From :\r\nName : NAMITA ROY\r\nAddress : 39/4B\r\n GOPALNAGAR ROAD\r\n ALIPORE\r\n KOLKATA,WEST BENGAL\r\n 700027\r\nEntity \r

如何从下面的文本中提取地址(39/4B…….700025)而不\r\n

Text<-"From :\r\nName         : NAMITA ROY\r\nAddress       : 39/4B\r\n                 GOPALNAGAR ROAD\r\n                 ALIPORE\r\n                 KOLKATA,WEST BENGAL\r\n                 700027\r\nEntity \r\nName         : SWARNABARSA PROJECTS PRIVATE LIMITED\r\nAddress       : 90A\r\n                 RAJ SEKHAR BOSE SARANI, FLAT NO.1D, 1ST FLOOR\r\n                 KOLKATA,WEST BENGAL\r\n                 INDIA - 700025\r\nFull Particulars of Remittance\r\nService Type: eFiling\r\n"
Text尝试以下方法:

Text<-"From :\r\nName         : NAMITA ROY\r\nAddress       : 39/4B\r\n                 GOPALNAGAR ROAD\r\n                 ALIPORE\r\n                 KOLKATA,WEST BENGAL\r\n                 700027\r\nEntity \r\nName         : SWARNABARSA PROJECTS PRIVATE LIMITED\r\nAddress       : 90A\r\n                 RAJ SEKHAR BOSE SARANI, FLAT NO.1D, 1ST FLOOR\r\n                 KOLKATA,WEST BENGAL\r\n                 INDIA - 700025\r\nFull Particulars of Remittance\r\nService Type: eFiling\r\n"

#Remove redundant spaces
library(stringr)
Text<-gsub("\\s+", " ", str_trim(Text))

address_dirty<-unlist(strsplit(Text,split = "Address : "))[2]
posiz<-regexpr("[0-9]{6,}",address_dirty) #Find ZIP Code posizion
address<-substr(address_dirty,1,posiz[1]+5)
address
[1] "39/4B GOPALNAGAR ROAD ALIPORE KOLKATA,WEST BENGAL 700027"
Text试试看


我的代码从“address:”之后一直到,包括6位数字(ZIP)

结果:

[[1]]
[1] "39/4B GOPALNAGAR ROAD ALIPORE KOLKATA,WEST BENGAL 700027"                            
[2] "90A RAJ SEKHAR BOSE SARANI, FLAT NO.1D, 1ST FLOOR KOLKATA,WEST BENGAL INDIA - 700025"

您是如何尝试提取它的?您在哪里遇到了问题?已使用您提供的新输入格式进行了更新。感谢您提供的代码,但是对于此文件,您在“实体”之前已经考虑过了。对于其他可能没有“实体”字的文件,如何处理。。。因此,我认为我们应该尽量考虑到邮政编码。谢谢你的代码,但对于这个文件,你已经考虑到“实体”什么其他文件可能不存在“实体”字,右…所以我认为我们应该考虑到邮政编码。
 strsplit(Text,"Name(\\s+)?:")[[1]][-1] %>% list %>% lapply(function(x)gsub(x=x,pattern="[\\s\\S]*?Address\\s+:([\\s\\S]*?\\d{6})[\\s\\S]*?$",replacement="\\1",perl=T)) %>%
    lapply(function(x)gsub(x=x,pattern="\\r|\\n",replacement="",perl=T)) %>% lapply(function(x)trimws(gsub(x=x,pattern="\\s+",replacement=" ",perl=T)))
[[1]]
[1] "39/4B GOPALNAGAR ROAD ALIPORE KOLKATA,WEST BENGAL 700027"                            
[2] "90A RAJ SEKHAR BOSE SARANI, FLAT NO.1D, 1ST FLOOR KOLKATA,WEST BENGAL INDIA - 700025"