[英]Elegant solutions to replacing multiple characters in a string
我正在為使用定制軟件許可證的人抓取一份HTML報告,作為向他們發送電子郵件的一種方式,以便他們在需要時釋放許可證。
我將從html文件中讀取的字符串拆分為一個列表,以換行符分隔,然后.split()
刪除我不需要的其他所有內容(例如html格式,pc名稱等)。
但是,文件的輸出如下所示:
["foo.bar", 'test.name', "john.doe"] etc.
我在每個名稱的末尾添加了@[companyname].com
,並將整個列表轉換為字符串。 然后,我來談我的問題。 我想擺脫列表中不需要的文本。 如下所示:
onlineUsers = str(userEmailAddress).replace(",",";").replace("[","").replace("]","").replace("'","")
我在底部添加了一個mailto鏈接,添加了以下瀏覽器彈出窗口:
webbrowser.open_new("mailto:" + onlineUsers)
一切都像夢一樣,但是.replace()
的鏈接確實讓我.replace()
。 我到處尋找更優雅的解決方案,但它們最終變得笨拙,似乎在釘子上使用了大錘。
是否有一種優雅的方式可以同時進行多個替換? 或者,至少,有一種更好的格式化方法嗎?
為了避免顯式鏈接,您可以創建要替換為鍵的文本的dict()
和要替換為值 t的文本 ,如下所示:
lst = ["blah[,].com", "gen@,]'com"]
rpl = {
"," : ";",
"[" : "",
"]" : "",
"'" : ""
}
lst1 = []
for lst_v in lst :
for k, v in rpl.items():
lst_v = lst_v.replace(k, v)
lst1.append(lst_v)
print lst1
這將導致:
['blah;.com', 'gen@;com']
請也請閱讀我對原始問題的評論。
為了仍然提供答案,我之前使用過的東西是:
for char in ['b\'', "\'", "\\n", '"', '[', ']', ',']: # Add any kind of char you would like to remove
if char in targeted_variable_value:
clean_output = targeted_variable_value.replace(char, "")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.