【问题标题】:replacing html syntax/ascii code in pandas columns [duplicate]替换熊猫列中的html语法/ascii代码[重复]
【发布时间】:2017-01-30 08:24:38
【问题描述】:

我正在尝试找到一种方法来替换字符串中的 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 

我是 pandas 的新手,但到目前为止我很喜欢这个工具。感谢您的帮助。

更新:

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

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

【问题讨论】:

  • 感谢您编辑您的答案。我认为您可以通过列表更改值。例如df.replace([r'&#45', r'&#39'], ['-', ''], regex=True),但我不确定。检查docs
  • @gabra 没问题,感谢有关编辑的建议。是的,第一条评论中提供的代码就像一个魅力,这就是我需要的,努力成为一个更好的 python 编码器。非常感谢!

标签: python pandas


【解决方案1】:

只是为了给新来这里的人留下一个答案,正如在 cmets 上讨论的那样,一个可能的解决方案是:

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

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

【讨论】:

    猜你喜欢
    • 2010-10-17
    • 2019-02-05
    • 2020-04-08
    • 2023-01-26
    • 1970-01-01
    • 2019-02-20
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多