【问题标题】:Python Pandas: How to replace string contain "?"Python Pandas:如何替换包含“?”的字符串
【发布时间】:2017-11-19 00:25:51
【问题描述】:

我有一个 Python 2.7 Pandas 数据框,如下所示:

Id      Title             URL
Id-1    Bruce Almighty    https://www.youtube.com/watch?v=5VGyTOGxyVA
Id-2    Superhero Movie   https://www.youtube.com/watch?v=3BnXz-7-y-o
Id-3    Taken             https://www.youtube.com/watch?v=vjbfiOERDYs
Id-4    Forest Gump       https://www.youtube.com/watch?v=eJFkCJySHdY&t=524s

我想用其他字符串替换部分字符串“?v=”,例如“URL”列中的“ppp”。我尝试了正常的替换命令:

df['URL'] = df['URL'].str.replace('?v=', 'ppp')

但出现以下错误。

error: nothing to repeat.

当我尝试只替换一个字符时,例如:

df['URL'] = df['URL'].str.replace('?', 'ppp')

它工作正常。为什么当我尝试替换字符串“?v =”时它不起作用?

【问题讨论】:

  • 您尝试替换 '?=v' 而不是 '?v='
  • 谢谢。编辑错误

标签: string python-2.7 pandas str-replace


【解决方案1】:

您需要通过\ 转义?

df['URL'] = df['URL'].str.replace('\?v=', 'ppp')
print (df)
     Id            Title                                                URL
0  Id-1   Bruce Almighty        https://www.youtube.com/watchppp5VGyTOGxyVA
1  Id-2  Superhero Movie        https://www.youtube.com/watchppp3BnXz-7-y-o
2  Id-3            Taken        https://www.youtube.com/watchpppvjbfiOERDYs
3  Id-4      Forest Gump  https://www.youtube.com/watchpppeJFkCJySHdY&t=...

Series.replace 的另一个解决方案:

df['URL'] = df['URL'].replace('\?v=', 'ppp', regex=True)
print (df)
     Id            Title                                                URL
0  Id-1   Bruce Almighty        https://www.youtube.com/watchppp5VGyTOGxyVA
1  Id-2  Superhero Movie        https://www.youtube.com/watchppp3BnXz-7-y-o
2  Id-3            Taken        https://www.youtube.com/watchpppvjbfiOERDYs
3  Id-4      Forest Gump  https://www.youtube.com/watchpppeJFkCJySHdY&t=...

【讨论】:

  • 谢谢。但是为什么当我尝试只替换“?”时它会起作用?角色?
  • 因为它是特殊的正则表达式字符。检查this
【解决方案2】:

或者,您可以指示 Pandas 您正在执行标准(不是 RegEx)替换:

df['URL'] = df['URL'].str.replace('?v=', 'ppp', regex=False)

【讨论】:

    猜你喜欢
    • 2019-05-25
    • 2021-06-08
    • 2016-10-30
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多