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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Python 中替換時,我們可以引用字典從鍵中獲取值嗎?

在 Python 中替換時,我們可以引用字典從鍵中獲取值嗎?

紫衣仙女 2022-06-28 10:39:02
我有一個包含術(shù)語和句子的平面文件。如果在句子中找到任何術(shù)語,我需要將其 id 附加到術(shù)語 (term|id) 中。模式匹配應(yīng)該不區(qū)分大小寫。此外,我們需要保留與句子中相同的大小寫。是否可以在替換調(diào)用中使用它的鍵來引用字典來獲取值?from pandas import DataFrameimport redf = {'id':[11,12,13,14,15,16],    'term': ['Ford', 'EXpensive', 'TOYOTA', 'Mercedes Benz', 'electric', 'cars'],        'sentence': ['F-FORD FORD/FORD is less expensive than Mercedes Benz.' ,'toyota, hyundai mileage is good compared to ford','tesla is an electric-car','toyota too has electric cars','CARS','CArs are expensive.']        }#Dataframe creationdf = DataFrame(df,columns= ['id','term','sentence'])#Dictionary creationdict = {}l_term = list(df['term'])l_id = list(df['id'])for i,j in zip(l_term,l_id):    dict[str(i)] = j#Building patterns to replacepattern = r'(?i)(?<!-)(?<!\w)(?:{})(?!\w)'.format('|'.join(map(re.escape, sorted(df["term"],key=len,reverse=True))))#Replacedf["sentence"].replace(pattern, r"\g<0>|present",, inplace=True,regex=True)而不是 |present 我需要參考像 |dict.get(\g<0>) 這樣的字典,或者有沒有其他方法可以實現(xiàn)這一點?此外,如果我們?yōu)?16,17 找到兩次汽車。我們可以附加任何一個。預(yù)期的結(jié)果是F-FORD FORD|11/FORD|11 is less expensive|12 than Mercedes Benz|14.toyota|13, hyundai mileage is good compared to ford|11tesla is an electric|15-cartoyota|13 too has electric|15 cars|16CARS|16CArs|16 are expensive|12.
查看完整描述

1 回答

?
牛魔王的故事

TA貢獻1830條經(jīng)驗 獲得超3個贊

您可以對當前代碼稍作修改:


from pandas import DataFrame

import re


df = {'id':[11,12,13,14,15,16],

    'term': ['Ford', 'EXpensive', 'TOYOTA', 'Mercedes Benz', 'electric', 'cars'],

        'sentence': ['F-FORD FORD/FORD is less expensive than Mercedes Benz.' ,'toyota, hyundai mileage is good compared to ford','tesla is an electric-car','toyota too has electric cars','CARS','CArs are expensive.']

        }

#Dataframe creation

df = DataFrame(df,columns= ['id','term','sentence'])


#Dictionary creation

dct = {}

l_term = list(df['term'])

l_id = list(df['id'])


for i,j in zip(l_term,l_id):

    dct[str(i).upper()] = j


#Building patterns to replace

pattern = r'(?i)(?<!-)(?<!\w)(?:{})(?!\w)'.format('|'.join(map(re.escape, sorted(df["term"],key=len,reverse=True))))


#Replace

df["sentence"]=df["sentence"].str.replace(pattern, lambda x: "{}|{}".format(x.group(),dct[x.group().upper()]))

注意事項:

  • dict是保留名稱,不要命名變量dict,使用dct

  • dct[str(i).upper()] = j- 將大寫的鍵添加到字典中以啟用字典中的鍵不區(qū)分大小寫的搜索

  • df["sentence"]=df["sentence"].str.replace(pattern, lambda x: "{}|{}".format(x.group(),dct[x.group().upper()]))是主(最后)行,它使用Series.str.replace它允許使用可調(diào)用作為替換參數(shù),一旦模式匹配,匹配將作為 Match 對象傳遞給 lambda 表達式,x其中使用檢索值dct[x.group().upper()]并使用 訪問整個匹配x.group()。


查看完整回答
反對 回復 2022-06-28
  • 1 回答
  • 0 關(guān)注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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