我有一个看起来像这样的字符串
text = HybridHello.x /usr/lib64/crt1.o /usr/lib64/crti.o /opt/pgi/11.9.0/linux86-64/11.9/lib/trace_init.o /usr/lib64/gcc/x86_64-suse-linux/4.3/crtbeginT.o /opt/pgi/11.9.0/linux86-64/11.9/lib/initmp.o /opt/cray/atp/1.4.1/lib//libAtpSigHandler.a /opt/cray/mpt/5.3.5/xt/seastar/mpich2-pgi/109/lib/libmpich_pgi.a /opt/cray/mpt/5.3.5/xt/seastar/mpich2-pgi/109/lib/libmpl.a /opt/cray/pmi/2.1.4-1.0000.8596.15.1.ss/lib64/libpmi.a /opt/cray/portals/2.2.0-1.0301.26633.6.9.ss/lib64/libportals.a /usr/lib/alps/libalpslli.a /usr/lib/alps/libalpsutil.a /usr/lib64/libpthread.a /opt/pgi/11.9.0/linux86-64/11.9/lib/libpgmp.a /usr/lib64/libpthread.a /opt/pgi/11.9.0/linux86-64/11.9/lib/nonuma.o /opt/pgi/11.9.0/linux86-64/11.9/lib/libnspgc.a /opt/pgi/11.9.0/linux86-64/11.9/lib/libpgc.a /usr/lib64/libpthread.a /usr/lib64/gcc/x86_64-suse-linux/4.3/libgcc.a /usr/lib64/gcc/x86_64-suse-linux/4.3/libgcc_eh.a /usr/lib64/libc.a /usr/lib64/gcc/x86_64-suse-linux/4.3/crtend.o /usr/lib64/crtn.o
我想基于第一个'/'拆分此字符串的内容,然后依次拒绝第一个。文件名(在本例中为HybridHello.x) -
/usr/lib64/crt1.o
/usr/lib64/crti.o
/opt/pgi/11.9.0/linux86-64/11.9/lib/trace_init.o
/usr/lib64/gcc/x86_64-suse-linux/4.3/crtbeginT.o
同样。
我在正则表达方面有一点经验,但在perl中也是如此。有人可以建议吗?
答案 0 :(得分:1)
正则表达对于这份工作来说是一种矫枉过正。您可以使用str.split
并切出列表中的第一个元素
<强>实施强>
for files in text.split()[1:]:
print files
输出
/usr/lib64/crt1.o
/usr/lib64/crti.o
/opt/pgi/11.9.0/linux86-64/11.9/lib/trace_init.o
....
注意强>
它的正则表达式等价物可能是re.split("\s+", test)[1:]
或re.findall("[^\s]+", test)[1:]
,但不应该明显是不必要的