Python:替换字符串中出现多次的两个符号之间的所有字符
Python: replace all characters in between two symbols that occur multiple times in a string
所以我有一个用于视频文件的 URL,我可以通过一个简单的 hack 来获取需要以某种方式编辑字符串的音频文件。
这是起始字符串:
https://v.redd.it/jvjih3f894b61/DASH_1080.mp4?source=fallback
我需要将分辨率 DASH_1080
替换为 DASH_audio
我想我可以替换 DASH
之后的 _
和之前的 .
之间的所有内容.mp4
但是 .
多次出现,所以使用 string.partition
是行不通的。
URL 应该是这样的:
https://v.redd.it/jvjih3f894b61/DASH_audio.mp4?source=fallback
我该怎么做,最好不用正则表达式,但我知道这可能是唯一的方法。
谢谢。
我的意思是..它很难看,正则表达式更好,但它可能会工作...
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
使用regular expressions and 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'
括号中的两个表达式是肯定的 lookahead/lookbehind 断言。
(?<=_).+?(?=\.)
非贪婪地匹配 "_"
和 "."
之间的任何内容 (".+?"
)。
>>> 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'
所以我有一个用于视频文件的 URL,我可以通过一个简单的 hack 来获取需要以某种方式编辑字符串的音频文件。
这是起始字符串:
https://v.redd.it/jvjih3f894b61/DASH_1080.mp4?source=fallback
我需要将分辨率 DASH_1080
替换为 DASH_audio
我想我可以替换 DASH
之后的 _
和之前的 .
之间的所有内容.mp4
但是 .
多次出现,所以使用 string.partition
是行不通的。
URL 应该是这样的:
https://v.redd.it/jvjih3f894b61/DASH_audio.mp4?source=fallback
我该怎么做,最好不用正则表达式,但我知道这可能是唯一的方法。
谢谢。
我的意思是..它很难看,正则表达式更好,但它可能会工作...
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
使用regular expressions and 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'
括号中的两个表达式是肯定的 lookahead/lookbehind 断言。
(?<=_).+?(?=\.)
非贪婪地匹配 "_"
和 "."
之间的任何内容 (".+?"
)。
>>> 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'