Python:替换字符串中多次出现的两个符号之间的所有字符
Posted
技术标签:
【中文标题】Python:替换字符串中多次出现的两个符号之间的所有字符【英文标题】:Python: replace all characters in between two symbols that occur multiple times in a string 【发布时间】: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_720
、DASH_480
和DASH_240
。 DASH_
将永远存在。
【参考方案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 expressions 和re.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
【讨论】:
以上是关于Python:替换字符串中多次出现的两个符号之间的所有字符的主要内容,如果未能解决你的问题,请参考以下文章