多个单词或破折号的字符串拆分

3

我想将一个字符串分割成多个字符串。我使用了re库,但是遇到了一个问题。假设我的字符串是 "Yakima, WA[4660,12051]49826",如果我这样做就可以:

>>> import re
>>> x = "Yakima, WA[4660,12051]49826"
>>> re.split('\W+', x)

它会返回

['Yakima', 'WA', '4660', '12051', '49826']

我希望它能够实现。但是问题在于,如果城市名称中有横杠或空格,如何将城市名称保持完整的字符串。我将处理多个城市,并且有些城市有2到3个工作城市和一些横杠。我需要使用三种数据结构来保存城市和州合并后的信息、坐标和人口。

>>> x = "Winston-Salem, NC[3610,8025]131885"
>>> re.split('\W+', x)
['Winston', 'Salem', 'NC', '3610', '8025', '131885']

或者

>>> x = "West Palm Beach, FL[2672,8005]63305"
>>> re.split('\W+', x)
['West', 'Palm', 'Beach', 'FL', '2672', '8005', '63305']

and I want:

['Winston-Salem', 'NC', '3610', '8025', '131885']
['West Palm Beach', 'FL', '2672', '8005', '63305']
2个回答

6
你可以通过[^\w\s-]+进行拆分:
>>> x = "Winston-Salem, NC[3610,8025]131885"
>>> re.split('[^\w\s-]+', x)
['Winston-Salem', ' NC', '3610', '8025', '131885']

>>> x = "West Palm Beach, FL[2672,8005]63305"
>>> re.split('[^\w\s-]+', x)
['West Palm Beach', ' FL', '2672', '8005', '63305']

[^\w\s-]+基本上意味着不是字母数字(a-zA-Z0-9_)���不是空格字符,也不是-


3
您可以尝试通过,[]进行分割:
re.split('[,\[\]]', x)

演示:

import re

L = ["Yakima, WA[4660,12051]49826",
"Winston-Salem, NC[3610,8025]131885",
"West Palm Beach, FL[2672,8005]63305"]

for e in L:
    print re.split('[,\[\]]', e)

>>> ['Yakima', ' WA', '4660', '12051', '49826']
>>> ['Winston-Salem', ' NC', '3610', '8025', '131885']
>>> ['West Palm Beach', ' FL', '2672', '8005', '63305']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接