如何从字符串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
相关产品推荐
相关产品推荐

