在循环期间从添加到字典的值中删除不需要的文本



以下是我收集的字典列表之一:(my_dict是一个全局变量)

my_dict = {'Name': [<h2>Christopher C. &amp; Jennifer H. Lamey</h2>], 'Phone': ['(256) 236-8889'], 'Email': ['office@servproanniston.com'], 'Website': ['https://www.servproanniston.com/company-profile'], 'Address': ['nSERVPRO of Anniston, Gadsden and Marshall Countyrn1140 Deerfoot ParkwayRainbow City, AL 35906 '], 'State': ['AL']}

我试图从每个键的值中删除方括号,<h2>和单引号,以便当我将其插入pandas作为数据框时,值将显示为每个值的文本。

当前代码:

def clean_dict(my_dict):
final_dict = ((x.remove("<h2>" and "'" and "[" and "]")) for x in my_dict.values())
contact_list.append(final_dict) 

def to_csv():
clean_dict(my_dict)
df = pd.DataFrame(contact_list, dtype="string")
df.to_csv("SERVPRO.csv")

我得到错误:

File "/Users/justinbenfit/Desktop/Python/Roto-Rooter Scrape/SERVPRO_refactor.py", line 163, in <genexpr>
final_dict = ((x.remove("<h2>")) for x in my_dict.values())
ValueError: list.remove(x): x not in list

假设x是每个字典的值,我不确定为什么这个错误具体。我试过其他几种方法,但都卡住了。如有任何指示,不胜感激。

由于dictionary的所有值都是列表,您可以使用列表的第一项重新分配每个值,以删除'方括号':

my_dict = {k: v[0] for k, v in my_dict.items()}

要删除h2标签,您可以使用.replace(<old_substring>, <new_substring>)。最终函数看起来像这样:

def clean_dict(my_dict):
my_dict = {k: v[0] for k, v in my_dict.items()}
for k, v in my_dict.items():
if '<h2>' in v:
my_dict[k] = v.replace('<h2>', '').replace('</h2>', '')
return my_dict

最新更新