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

如何从字符串str1=start name.txt中提取仅含name的str2?

嘿,这个需求挺常见的,给你几个实用的实现思路,按需选就行:

方法1:字符串分割法(适合格式固定的场景)

如果你的字符串格式是固定的——前缀一定是start (带空格),后缀一定是.txt,那用两次split()就能轻松搞定:

str1 = "start name.txt"
# 先按空格拆分取第二部分,再按点拆分取第一部分
str2 = str1.split()[1].split('.')[0]
print(str2)  # 输出: name

这个方法简单直接,代码量少,适合格式完全固定的情况。

方法2:索引切片法(更灵活的场景)

要是前缀不一定是start(比如可能是begin或者其他长度不同的内容),但只要是空格前面的都要去掉,后缀是最后一个点后面的内容,那用索引切片更稳妥:

str1 = "start name.txt"
# 找到第一个空格的位置,加1就是目标内容的起始索引
start_idx = str1.find(' ') + 1
# 找到最后一个点的位置,作为目标内容的结束索引
end_idx = str1.rfind('.')
# 切片提取中间内容
str2 = str1[start_idx:end_idx]
print(str2)  # 输出: name

这种方法不依赖固定前缀的长度,只要结构是「前缀 + 空格 + 目标内容 + .txt」就能用。

方法3:正则表达式法(复杂场景适配)

如果你的字符串格式可能有变化(比如前缀后面可能有多个空格,或者目标内容里有特殊字符),正则表达式就能应对更复杂的情况:

import re

str1 = "start name.txt"
# 匹配空格后、点前的连续字符,捕获中间的目标内容
match_result = re.search(r'\s(\w+)\.', str1)
if match_result:
    str2 = match_result.group(1)
    print(str2)  # 输出: name

这里的正则\s(\w+)\.会匹配任意空格,捕获后面的字母/数字/下划线内容,直到遇到点为止。如果目标内容包含其他字符,你可以把\w+改成[^.]+(匹配除了点之外的所有字符),适配更多场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:21:28