【问题标题】:python regex string splitpython 正则表达式字符串拆分
【发布时间】:2015-11-04 17:22:57
【问题描述】:

以这种方式拥有数据

data1 = 'Seattle, WA 98108'
data2 = 'SeattleWA 98108'
data3 = 'Seattle, WA98108'
data3 = 'Seattle, WA   98108'

如何拆分所有案例以获取数据:

city = 'Seattle'
state = 'WA'
zip = '98108'

当然有很多不同的城市

【问题讨论】:

    标签: python regex python-2.7


    【解决方案1】:

    使用re.findall

    re.findall(r'^[A-Z][a-z]+|[A-Z]+|\d+', s)
    

    例子:

    >>> def split_c(s):
        return re.findall(r'^[A-Z][a-z]+|[A-Z]+|\d+', s)
    
    >>> split_c('Seattle, WA 98108')
    ['Seattle', 'WA', '98108']
    >>> split_c('SeattleWA 98108')
    ['Seattle', 'WA', '98108']
    >>> split_c('Seattle, WA98108')
    ['Seattle', 'WA', '98108']
    >>> split_c('Seattle, WA   98108')
    ['Seattle', 'WA', '98108']
    >>> city, state, zip_ = split_c('Seattle, WA   98108')
    >>> city
    'Seattle'
    >>> state
    'WA'
    >>> zip_
    '98108'
    >>> 
    

    【讨论】:

    • 只匹配西雅图。你需要分组。
    • 我的错 :) 这就是我没有先测试的结果。
    • hm 出现数据错误 ` Winter Park, FL 32789 ` ValueError: too many values to unpack
    • 试试re.findall(r'^[A-Z][a-z]+(?:\s+[A-Z][a-z]+)*|[A-Z]+|\d+', s)
    • @AvinashRaj 非常感谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 2013-04-26
    • 1970-01-01
    相关资源
    最近更新 更多