【问题标题】:Python: replace all characters in between two symbols that occur multiple times in a stringPython:替换字符串中多次出现的两个符号之间的所有字符
【发布时间】:2021-12-14 08:27:17
【问题描述】:

所以我有一个视频文件的 URL,我可以做一个简单的 hack 来获取我需要以某种方式编辑字符串的音频文件。

这里是起始字符串:

https://v.redd.it/jvjih3f894b61/DASH_1080.mp4?source=fallback

我需要将分辨率DASH_1080 替换为DASH_audio,我想我可以替换DASH 之后的_.mp4 之前的. 之间的所有内容,但. 出现多次所以使用string.partition 是行不通的。

网址应如下所示:

https://v.redd.it/jvjih3f894b61/DASH_audio.mp4?source=fallback

我怎么能这样做,最好没有正则表达式,但我知道这可能是唯一的方法。

谢谢。

【问题讨论】:

  • 会一直是DASH_1080 吗?
  • 为什么没有正则表达式?
  • 不,它可能是不同的分辨率。其中包括DASH_720DASH_480DASH_240DASH_ 将永远存在。

标签: python python-3.x regex string replace


【解决方案1】:
>>> s = 'https://v.redd.it/jvjih3f894b61/DASH_1080.mp4?source=fallback'
>>> re.sub('DASH_\d+', 'DASH_audio', s)
'https://v.redd.it/jvjih3f894b61/DASH_audio.mp4?source=fallback'

【讨论】:

    【解决方案2】:

    使用regular expressionsre.sub

    s = "https://v.redd.it/jvjih3f894b61/DASH_1080.mp4?source=fallback"
    re.sub(r"(?<=_).+?(?=\.)", "audio", s)
    # 'https://v.redd.it/jvjih3f894b61/DASH_audio.mp4?source=fallback'
    

    两个带括号的表达式是肯定的前瞻/后瞻断言。

    (?<=_).+?(?=\.)
    

    非贪婪匹配 "_""." 之间的任何内容 (".+?")。

    【讨论】:

      【解决方案3】:

      我的意思是......它很丑,正则表达式更好,但它可能会工作......

      str = "https://v.redd.it/jvjih3f894b61/DASH_1080.mp4?source=fallback"
      str_split = str.split("DASH_")
      end_str = str_split[1].split(".")
      str = str_split[0] + "DASH_audio." + ".".join(end_str[1:])
      

      输出 https://v.redd.it/jvjih3f894b61/DASH_audio.mp4?source=fallback

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-14
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 2019-11-27
        • 1970-01-01
        相关资源
        最近更新 更多