例如,我有这个文件(可以是一个):
z:/test/output/AX_001_123_890_v01.exr
z:/test/output/AX_001_123_890_v01_preview_lores.exr
我使用此代码提取文件名:
[file rootname [file tail [value root.name]]]
输出=
AX_001_123_890_v01
AX_001_123_890_v01_preview_lores
接下来,我只想提取AX_001_123
部分(或从左边开始的前3个片段)。最简单的方法是什么?
答案 0 :(得分:2)
使用拆分和/或连接是否有任何困难?该文档非常简单:split
,join
和lrange
(这将从列表中获得元素的子列表):
set input "AX_001_123_890_v01"
set output [join [lrange [split $input "_"] 0 2] "_"]
# AX_001_123
set input "AX_001_123_890_v01_preview_lores"
set output [join [lrange [split $input "_"] 0 2] "_"]
# AX_001_123
答案 1 :(得分:1)
您可能还需要考虑使用[regsub]
来提取前缀字符串的正则表达式:
% regsub {^(([^_]+_){0}[^_]+).*$} "AX_001_123_890_v01" {\1}
AX
% regsub {^(([^_]+_){1}[^_]+).*$} "AX_001_123_890_v01" {\1}
AX_001
% regsub {^(([^_]+_){2}[^_]+).*$} "AX_001_123_890_v01" {\1}
AX_001_123
% regsub {^(([^_]+_){3}[^_]+).*$} "AX_001_123_890_v01" {\1}
AX_001_123_890
% regsub {^(([^_]+_){4}[^_]+).*$} "AX_001_123_890_v01" {\1}
AX_001_123_890_v01
{0}
,{1}
,...来将特定数量n
的子表达式([^_]+_)
与输入字符串进行匹配。这个数字n
等于(m-1)
,其中m
是您要查找的“元素”的数量。答案 2 :(得分:-1)
>>> n = 3
>>> groups = text.split('_')
>>> '_'.join(groups[:n]), '_'.join(groups[n:])
这将为您提供python中两个必需的组中的两个。