如何使用python拆分文本?

2024-09-27 00:22:49 发布

您现在位置:Python中文网/ 问答频道 /正文

f_output.write('\n{}, {}\n'.format(filename, summary))

我正在打印输出作为文件名。我得到的输出为VCALogParser\u输出_ARW.log文件,VCALogParser\u输出_CZC.log公司等等。但我只对印刷ARW、CZC等感兴趣。所以请有人告诉我如何分割这段文字?你知道吗


Tags: 文件logformatoutput文件名公司summaryfilename
3条回答

如果您只对CZCARW感兴趣而没有.log,那么可以使用^{}方法:

>>> import re
>>> s1 = 'VCALogParser_output_ARW.log'
>>> s2 = 'VCALogParser_output_CZC.log'
>>> re.search(r'.*_(.*)\.log', s1).group(1)
'ARW'
>>> re.search(r'.*_(.*)\.log', s2).group(1)
'CZC'

或者更好地制作模式p,然后在格式化字符串时调用其search方法:

>>> p = re.compile(r'.*_(.*)\.log')
>>> 
>>> '\n{}, {}\n'.format(p.search(s1).group(1), p.search(s2).group(1))
'\nARW, CZC\n'

另外,使用^{}以及积极的前瞻性和组命名可能会有所帮助:

>>> p = re.compile(r'.*(?<=_)(?P<mystr>[a-zA-Z0-9]+)\.log$')
>>> 
>>> 
>>> p.sub('\g<mystr>', s1)
'ARW'
>>> p.sub('\g<mystr>', s2)
'CZC'
>>> 
>>> 
>>> '\n{}, {}\n'.format(p.sub('\g<mystr>', s1), p.sub('\g<mystr>', s2))
'\nARW, CZC\n'

如果您不能或不想使用re模块,则可以定义不需要的字符串长度,并用它们索引字符串变量:

>>> i1 = len('VCALogParser_output_')
>>> i2 = len ('.log')
>>> 
>>> '\n{}, {}\n'.format(s1[i1:-i2], s2[i1:-i2])
'\nARW, CZC\n'

但请记住,只要您的所有字符串变量中都有这些公共字符串,上述内容就有效。你知道吗

fname.split('_')[-1] 

但这会给你CZC.log公司', 'ARW.log文件'依此类推,假设所有文件都具有相同的下划线分隔格式。你知道吗

filename.split('_')[-1].split('.')[0]

这会给你:“ARW”

summary.split('_')[-1].split('.')[0]

这会给你:“CZC”

相关问题 更多 >

    热门问题