我有一个源文件,其中包含一些需要解析的格式的数据。我正在编写一个ETL过程,它必须匹配其他数据。解析混合分隔符数据集
大多数数据格式为城市,州(美国标准,或多或少)。有些城市分布在较重的人口聚集区和多个城市。
大部分数据看起来像这样(称之为1):
Elkhart, IN
有人的地方就有多个城市,一个破折号分隔(称之为2):
Hickory-Lenoir-Morganton, NC
它仍然不是当这些城市处于不同的状态时,这种情况太复杂了(称为3):
Steubenville, OH-Weirton, WV
这一个给我一个循环;它是有道理的,但它刷新先前格式(称之为4):
Kingsport, TN-Johnson City, TN-Bristol, VA-TN
在该示例中,Bristol
在两个VA
和TN
。再有就是这个(这个5):
Mayagüez/Aguadilla-Ponce, PR
我没事用破折号替换斜线和处理同前面的例子。其中还包含一个变音符号,其余的数据都不含变音符号。我很喜欢剥离变音符号,这在PHP中似乎很简单。
再有就是我的最后一个例子(这个6):
Scranton--Wilkes-Barre--Hazleton, PA
城市名称包含划线这样的城市名之间的分隔符是一个双破折号。
我想要制作的是,给定任何上述示例和其他几百行遵循相同格式的行,为每个行分配[[city, state],...]
,以便我可以将它们转换为SQL。例如,解析4将产生:
[
['Kingsport', 'TN'],
['Johnson City', 'TN'],
['Bristol', 'VA'],
['Bristol', 'TN']
]
我使用了一个标准的PHP安装,我有preg_match
等,但没有PECL库。顺序不重要。
有没有一大堆if-then语句来做这件事的好方法?