Excel:parsing地址

我已经在泰国网站上search了一些餐馆的数据。 我目前有一个地址字段的问题,因为在网站上的地址搬到下一行时,刮了决定结合它,而不是留下任何空间。 例如:

22/F, Dusit Thani Bangkok946 Rama 4 RoadBangkokThailand 1/F, Oakwood Residence113 Thonglor Soi 13BangkokThailand G/F, Ocean Tower IISukhumvit Soi 21WattanaBangkokThailand 

在第一个条目中,我希望k和9之间以及d和B之间有一个空格,其他条目也是如此。

我目前正在使用BeautifulSoup从这里刮取数据。 如果任何人都可以帮我解决这个问题,或者更好的方法来刮去HTML我都听过。 我宁愿不要手动更改280+地址条目。

你的例子显示了一些需要空间插入的模式

  • 小写字母后面跟大写字母
  • 小写字母后跟一个数字
  • 数字后跟大写字母
    • (但是这最后可能有一个包含数字和字母的地址有问题)

这可以用正则expression式完成,在VBA中开发一个用户定义的函数。


 Option Explicit Function SplitAddress(S As String) As String Dim RE As Object Const sPatNumberCap As String = "\d(?=[AZ])" Const sPatNonCapNumberOrCap As String = "[az](?=[A-Z0-9])" Const sRepl As String = "$& " Dim sTemp As String Set RE = CreateObject("vbscript.regexp") With RE .Global = True .ignorecase = False .Pattern = sPatNumberCap sTemp = .Replace(S, sRepl) .Pattern = sPatNonCapNumberOrCap sTemp = .Replace(sTemp, sRepl) End With SplitAddress = sTemp End Function 

如果地址2A的某条街道是个问题,您可能可以根据这些string的types来改变.Pattern。 只要是大写字母后面的非空格字符,就可以确保只插入空格。

例如:

 Const sPatNumberCap As String = "\d(?=[AZ]\S)" 

但没有例子,很难推测。