You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python提取库名与带前缀版本号失败,咨询原字符串转换方法

解决方案

问题分析

你原来的代码出错原因在于:new_str处理后变成了something-try-composition-library version -0.29.2,后续用re.split('\\ version \\b', new_str)时,\b代表单词边界,但" version "后面跟着的是-(非单词字符),导致正则不匹配,split操作未生效,所以结果不符合预期。

简便实现方法

方法1:正则捕获分组(适配格式小变动,更可靠)

直接用正则匹配出库名和版本号,再拼接成目标格式:

import re
mystr = "something-try-composition-library version v0.29.2"

# 匹配库名和版本号的正则
pattern = r'^(.*?) version v(\d+\.\d+\.\d+)$'
match_result = re.match(pattern, mystr)

if match_result:
    library_name = match_result.group(1)
    version_str = f'-{match_result.group(2)}'
    final_output = [library_name, version_str]
    print(final_output)  # 输出: ['something-try-composition-library', '-0.29.2']

方法2:字符串分割(格式固定时更简洁)

如果字符串格式完全固定(始终是"库名 version v版本号"),直接用指定分隔符分割即可:

mystr = "something-try-composition-library version v0.29.2"

# 按固定分隔符分割
split_parts = mystr.split(" version v")
final_output = [split_parts[0], f'-{split_parts[1]}']
print(final_output)  # 输出符合预期

原代码修正(可选)

如果要基于你原来的思路调整,只需去掉正则中的\b:

import re
mystr = "something-try-composition-library version v0.29.2"
new_str = '-'.join(mystr.rsplit('v', 1))
final_str = re.split(' version ', new_str)
print(final_str)  # 输出符合预期

内容的提问来源于stack exchange,提问作者Sunny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:30:53