【问题标题】:Looking for a way to correctly strip a string [duplicate]寻找一种正确剥离字符串的方法[重复]
【发布时间】:2020-11-07 17:34:44
【问题描述】:

我正在使用 Spotify API 从大量歌曲中获取歌曲数据。为此,我需要在 API 调用中输入歌曲 URI。为了获取歌曲 URI,我使用了另一个 API 端点。它以这种形式返回 URI:'spotify:track:5CQ30WqJwcep0pYcV4AMNc' 我只需要 URI 部分,

所以我用'spotify:track:5CQ30WqJwcep0pYcV4AMNc'.strip("spotify:track) 去掉了第一部分。只是这没有按预期工作,因为此调用还删除了尾随的“c”。

我试图构建一个正则表达式来删除第一部分,但是指令太复杂了,D**K 现在卡在吊扇中:'(。任何帮助将不胜感激。

【问题讨论】:

  • 使用replace(),而不是strip()
  • 除了replace你还可以.split(":")[-1]
  • 当然......谢谢大家......知道有比正则表达式更简单的方法......

标签: python


【解决方案1】:

strip() 删除参数字符串中的所有前导和尾随字符,它与字符串不完全匹配。

您可以使用replace() 删除确切的字符串:

'spotify:track:5CQ30WqJwcep0pYcV4AMNc'.replace("spotify:track:", "")

或将其拆分为: 个字符:

'spotify:track:5CQ30WqJwcep0pYcV4AMNc'.split(":")[-1]

【讨论】:

  • 感谢 Barmar,非常感谢
【解决方案2】:

使用简单的正则表达式替换:

import re

txt = 'spotify:track:5CQ30WqJwcep0pYcV4AMNc'
pat_to_strip = ['^spotify\:track', 'MNc$']
pat = f'({")|(".join(pat_to_strip)})'
txt = re.sub(pat, '', txt)

# outputs:
>>> txt

:5CQ30WqJwcep0pYcV4A

基本上以^ 开头的模式将从头开始剥离,以$ 结尾的模式将从末尾剥离。

作为示例,我去掉了最后 3 个字母。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-01
    • 2015-07-24
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2021-07-06
    相关资源
    最近更新 更多