2016-09-21 57 views
2

我試圖找到一種方法來替換字符串中的html語法。我收到很多csv文件,所以我發現熊貓是處理csv的一個很棒的工具。替換pandas列中的html語法/ ascii代碼

有時我收到的數據中嵌入了html語法的字符串,例如在地址欄中,我看到125&#45128 downing st,它是125-128 downing st。這不僅是&#49,我還得到&#39&amp,這是'&

我試圖做到這一點的代碼,但我知道這不會給我正確的格式

df = df.replace(r'[&#45]','-', regex=True) 

我得到幾個欄目,如企業名稱,地址,城市,州 - 所以我想針對所有列只是爲了確保所有的HTML語法被刪除/更換

數據幀格式

Address 1     Company 
0 1st&#452st Avenue N   johnson &amp johnson 
1 243&#454800 Kingsway Ave cold &amp brew 
2 300 Hwy 7     coder&#39s club 

所需的格式

Address 1     Company 
0 1st-2st Avenue N   johnson and johnson 
1 243-4800 Kingsway Ave  cold and brew 
2 300 Hwy 7     coder's club 

我是熊貓的新手,但我很喜歡這個工具。謝謝你的幫助。

UPDATE:

好吧,我發現我在我使用的代碼錯誤,這df = df.replace(r'[&#45]','-', regex=True)應該df = df.replace(r'&#45','-', regex=True);這將取代html語法。不過,我仍然想找到解決這個問題的pythonic解決方案。

我很想做這個代碼,以刪除其他的html語法。

df = df.replace(r'&#45','-', regex=True).replace(r'&#39','', regex=True).replace(r'&amp','and', regex=True) 

有沒有乾淨的解決方案這行代碼?

+0

感謝編輯你的答案。我認爲你可以通過列表更改值。例如'df.replace([r'&#45',r'&#39'],[' - ',''],regex = True)',但我不確定。檢查[文檔](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.replace.html) – gabra

+1

@ gabra沒有問題,並感謝關於編輯的建議。是的,第一條評論中提供的代碼就像一個魅力,這正是我需要的,試圖成爲一個更好的Python編碼器。非常感謝! – medev21

回答

1

剛剛離開的答案,新人們來到這裏,一個可能的解決方案,對意見的討論,就是:

df.replace([r'&#45', r'&#39', r'&amp'], ['-', '', 'and'], regex=True) 

df.replace({'&#45':'-', r'&#39':'', '&amp':'and'}, regex=True)