Split 如何获得由特定字符分隔的字符串部分?

Split 如何获得由特定字符分隔的字符串部分?,split,tcl,Split,Tcl,例如,我有一个文件(可以是任何一个): 我使用以下代码提取文件名: [file rootname [file tail [value root.name]]] 输出= AX_001_123_890_v01 AX_001_123_890_v01_preview_lores 接下来,我只想提取AX_001_123部分(或左起的前3段)。最简单的方法是什么 >>> n = 3 >>> groups = text.split('_') >>>

例如,我有一个文件(可以是任何一个):

我使用以下代码提取文件名:

[file rootname [file tail [value root.name]]]
输出=

AX_001_123_890_v01  
AX_001_123_890_v01_preview_lores
接下来,我只想提取
AX_001_123
部分(或左起的前3段)。最简单的方法是什么

>>> n = 3
>>> groups = text.split('_')
>>> '_'.join(groups[:n]), '_'.join(groups[n:])
这将为您提供python中所需的两个组


这将为您提供python中所需的两个组。

使用split和/或join有困难吗?文档非常简单:,并且(从列表中获取元素的子列表):


您在使用拆分和/或联接时有困难吗?文档非常简单:,并且(从列表中获取元素的子列表):


您可能还需要考虑使用正则表达式来提取前缀字符串:

% 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
    等于
    (m-1)
    ,其中
    m
    是您要查找的“元素”数
  • 基于正则表达式的方法不需要输入字符串(及其子字符串)作为有效的Tcl列表
  • 保存一些命令调用
  • 免责声明:我不是一个正则表达式向导,所以上面的表达式可能会得到改进,可能超出我的理解范围

,您可能还需要考虑使用正则表达式来提取前缀字符串:

% 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
    等于
    (m-1)
    ,其中
    m
    是您要查找的“元素”数
  • 基于正则表达式的方法不需要输入字符串(及其子字符串)作为有效的Tcl列表
  • 保存一些命令调用
  • 免责声明:我不是一个正则表达式向导,所以上面的表达式可能会得到改进,可能超出我的理解范围

谢谢,但我正在查找TCL语法:-)谢谢,但我正在查找TCL语法:-)
% 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