第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用正則表達(dá)式根據(jù)限制字符分割字符串

使用正則表達(dá)式根據(jù)限制字符分割字符串

慕田峪4524236 2023-10-26 15:49:23
我有一個(gè)問題,我需要使用給定的字符串構(gòu)建一個(gè) Python 字典。該字符串具有一定的模式,如下所示:string = 'streetName=BENEDITO DE PAULA, QD 03 LT 03, state=AM, complement=SJ BANDEIRANTES, number=4, country=BRA'分割不能用逗號(hào)來完成,因?yàn)槲谋局虚g有一個(gè)逗號(hào)需要變成字符串。我需要通過生成下面的列表來完成拆分,以便稍后它成為字典。字典的鍵是每個(gè)相等的正弦(=)的分隔符,值是后續(xù)文本。list = ['streetName=BENEDITO DE PAULA, QD 03 LT 03', 'state=AM', 'complement=SJ BANDEIRANTES', 'number=4', 'country=BRA']所以我需要從正則表達(dá)式生成一個(gè)列表,我認(rèn)為應(yīng)該考慮文本(, TEXT=)然后我將生成一個(gè)字典如下dict(v.split("=") for v in re.split("(REGEX)", string))正在使用下面的功能,但它不能解決這種情況下的問題def convert_to_json(x):    dic = dict(v.split("=") for v in x.split(","))    return json.dumps({k.strip():v for (k,v) in dic.items()})
查看完整描述

2 回答

?
隔江千里

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊

您可以在模式上進(jìn)行拆分\w+=,因?yàn)槟梨I不包含非單詞字符,并捕獲拆分字符。這會(huì)給你留下尾隨空格和逗號(hào),但這并不難清理:


import re


string = 'streetName=BENEDITO DE PAULA, QD 03 LT 03, state=AM, complement=SJ BANDEIRANTES, number=4, country=BRA'


pairs = re.split(r'(\w+=)', string)[1:]   

[a + b.strip(', ') for a, b in zip(pairs[::2], pairs[1::2])]

結(jié)果是 :


['streetName=BENEDITO DE PAULA, QD 03 LT 03',

 'state=AM',

 'complement=SJ BANDEIRANTES',

 'number=4',

 'country=BRA']


查看完整回答
反對(duì) 回復(fù) 2023-10-26
?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊

這里寫正則表達(dá)式會(huì)很困難,因?yàn)樨澙菲ヅ鋾?huì)匹配太多逗號(hào),非貪婪匹配會(huì)匹配太少逗號(hào)。相反,我會(huì)通過用逗號(hào)分割文本來解決這個(gè)問題,然后檢查每個(gè)子字符串以查看它是否包含等號(hào)。


def convert_to_dict(s):

    raw_items = s.split(", ")

    items = []

    for item in raw_items:

        if "=" in item:

            items.append(item)

        elif len(items) > 0:

            items[-1] += ", " + item

        else:

            raise ValueError("Invalid string: dictionary keys cannot contain commas")

    result = {}

    for item in items:

        key, value = item.split("=", maxsplit=1)

        result[key] = value

    return result


查看完整回答
反對(duì) 回復(fù) 2023-10-26
  • 2 回答
  • 0 關(guān)注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)