簡體   English   中英

替換字符串中多個字符的優雅解決方案

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM