替换pandas列中的html语法/ ascii代码

时间:2016-09-21 22:27:49

标签: python pandas

我试图找到一种方法来替换字符串中的html语法。我得到了很多csv文件,所以我发现pandas是一个很好的工具来处理csv。

有时我会收到嵌入字符串中的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 

我是熊猫的新手,但我很喜欢这个工具。谢谢你的帮助。

更新:

好的,我发现我使用的代码存在错误,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)

这行代码有一个干净的解决方案吗?

1 个答案:

答案 0 :(得分:1)

为了给新人们留下答案,正如评论中所讨论的那样,可能的解决方案是:

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

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