Python Pandas:使用正则表达式用超链接替换字符串

Posted

技术标签:

【中文标题】Python Pandas:使用正则表达式用超链接替换字符串【英文标题】:Python Pandas: Use regex to replace strings with hyperlink 【发布时间】:2017-08-07 19:17:30 【问题描述】:

初学者的问题。

我正在使用 BS4 抓取房屋广告,并使用 Pandas 分析后续数据。

我有一个包含几列的 DataFrame。这个问题只考虑其中一列,看起来像,

district | ... |
----------------
   A     | ... |
   B     | ... |
   C     | ... |
  ...    | ... |

我有一个与地区相关的链接列表。例如A区,链接看起来像www.site.com/city/district-A/

我想用<a href="www.site.com/city/district-A/">A</a> 替换列中的每个地区名称(例如“A”)。最好我使用正则表达式进行替换,因为我有各种各样的地区名称和地区链接。

为了更难,区名是非ASCII,而链接是ASCII。

我该怎么做?

【问题讨论】:

【参考方案1】:

看来你需要apply format:

df = pd.DataFrame('district':['A','B','C'])

df['url'] = df.district.apply('<a href="www.site.com/city/district-0/">0</a>'.format)
print (df)
  district                                            url
0        A  <a href="www.site.com/city/district-A/">A</a>
1        B  <a href="www.site.com/city/district-B/">B</a>
2        C  <a href="www.site.com/city/district-C/">C</a>

【讨论】:

谢谢!我花了一段时间才开始使用它——我没有使用字典。 所以,我已经很接近了。不过,您知道将/district-A/ 中的A 转换为ASCII 字符的方法吗?我需要链接中的A 为ASCII,但链接名称A 为非ASCII。现在两者都是非 ASCII - 名称是好的,但链接不起作用...... 现在我离线了,只能在手机上使用,但可以使用一些转换器从非 ASCII 转换为 ASCII 吗?我从来没有以这种方式转换过一些文本,所以很难帮助你。 :(【参考方案2】:

为什么不

for idx, row in df.iterrows():
     A = row['column']
     new = '<a href="www.site.com/city/district-A/">A</a>'.format(A=A)
     df[idx, 'column'] = new 

【讨论】:

感谢您的建议!但是,我没有让它工作:(

以上是关于Python Pandas:使用正则表达式用超链接替换字符串的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 Python / pandas 中使用正则表达式获取子字符串

Python Pandas 和正则表达式使用字典替换 Dataframe 中的项目

用于各种日期的 Python/Pandas 正则表达式 [重复]

Python - Pandas - 用正则表达式替换字符串| (要么)

正则表达式在多个模式之前找到一个数字序列,放入一个新列(Python,Pandas)

使用正则表达式解析多个文本字段并编译成 Pandas DataFrame