我想用字典替換包含數字的字串的特定部分。假設我有一本字典:
d = {7: 'mandat_dép?t', 46: 'battu', 79: 'alphabétisé', 127: 'escrime', 160: 'daara', 162: 'arrivée_foyer', 169: 'fugue', 170: 'né_légitimement'}
我有這些型別的字串:
s_1 = "7 ==> 127 #SUP: 41 #CONF: 0.8723404255319149"
s_2 = "46 ==> 162,169 #SUP: 39 #CONF: 0.8478260869565217"
s_3 = "46,169 ==> 162 #SUP: 39 #CONF: 0.975"
s_4 = "160,169 ==> 79,162 #SUP: 40 #CONF: 0.7692307692307693"
s_5 = "160,162,170 ==> 79 #SUP: 39 #CONF: 0.8125"
預期的字串:
new_s_1 = "mandat_dép?t ==> escrime #SUP: 41 #CONF: 0.8723404255319149"
new_s_2 = "battu ==> arrivée_foyer,fugue #SUP: 39 #CONF: 0.8478260869565217"
new_s_3 = "battu,fugue ==> arrivée_foyer #SUP: 39 #CONF: 0.975"
new_s_4 = "daara,fugue ==> alphabétisé,arrivée_foyer #SUP: 40 #CONF: 0.7692307692307693"
new_s_5 = "daara,arrivée_foyer,né_légitimement ==> alphabétisé #SUP: 39 #CONF: 0.8125"
請注意,即使字典中存在某些鍵,我也不想替換 #SUP 的值。
有沒有有效的方法來做到這一點?
uj5u.com熱心網友回復:
1-用“”分割字串
2-回圈它們并檢查哪些是你的dict的實體;if True replace with
3- join the string back by " " 如果有要排除的鍵,則需要為它們添加額外的檢查。
示例代碼
d = {7: 'mandat_dép?t', 46: 'battu', 79: 'alphabétisé', 127: 'escrime', 160: 'daara', 162: 'arrivée_foyer', 169: 'fugue', 170: 'né_légitimement'}
s_1 = "7 ==> 127 #SUP: 41 #CONF: 0.8723404255319149"
n_1 = " ".join([d.get(int(ni)) if ni.isnumeric() and d.get(int(ni)) else ni for ni in s_1.split(" ") ])
print(n_1)
uj5u.com熱心網友回復:
我不知道這是否是一種有效的方法,但這是我的代碼:
old_s = [s_1, s_2, s_3, s_4, s_5]
new_s = []
for i in old_s:
number, string = i.split('#SUP:')
number = number.split("==>")
number = [r.strip() for r in number]
number = [r.split(",") for r in number]
text_number = []
for r in number:
each_text_number = []
for item in r:
each_text_number.append(d[int(item)])
text_number.append(each_text_number)
front_number = ','.join(front_num for front_num in text_number[0])
back_number = ','.join(back_num for back_num in text_number[1])
text_rule_string = front_number " ==> " back_number " #SUP:" string
new_s.append(text_rule_string)
print(new_s)
uj5u.com熱心網友回復:
def converter(string: str) -> str:
number, string = string.split('#SUP:')
first, last = number.split("==>")
first = ','.join([d[int(j)] for j in first.split(',')])
last = ','.join([d[int(j)] for j in last.split(',')])
return f"{first} ==> {last} #SUP:{string}"
new_s_1 = converter(s_1)
new_s_2 = converter(s_2)
etc...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/521669.html
標籤:Python细绳字典
