【问题标题】:Using Regular Expressions to isolate the relevant portion of a long title使用正则表达式隔离长标题的相关部分
【发布时间】:2019-08-10 16:03:55
【问题描述】:

TITLE = MANTRA (IFD & RENDER): mh 104_IJ_5070_Fireworks_residualSmoke_v3 (/obj/FX_jet_contrails/_RENDER/smokeResidual_Beauty) (Frames: 1001-1151)

我想使用正则表达式隔离此标题的 "mh 104_IJ_5070_FireWorks_residualSmoke_v3" 部分,但我正在努力寻找一种干净的方法来做到这一点。

有什么想法吗?

请使用 Python 2.7

【问题讨论】:

  • 所以,我想说给出更多标题的例子。标题是否总是2 characters,后跟_ 分隔标识符?
  • KATANA RENDER: abr char_nasr_main_lookdev_v002 (Layers: turntable_head) (Frames: 1001-1200) (Time: ~30 min) (Tpl: v004)
  • SHOTBOT KATANA 渲染:abr MC0825_main_layout_v001(层:bty_grey_qc)(帧:1001-1185)(时间:~15 分钟)(Tpl:v005)
  • 匹配渲染:abr MS0255_main_matchmation_v001(层:输出)(帧:1001-1052)

标签: python regex string 3d render


【解决方案1】:

这完全取决于您可以更改什么,因此您需要将正则表达式锚定在什么上。

如果你能提供帮助,我个人会避免使用正则表达式 - 它们只会产生很多错误。

试试:

 " ".join(str.split()[6:8])

将字符串拆分为单词,然后抓取第 6 个和第 7 个单词并将它们重新组合在一起。

如果你真的想使用正则表达式

import re
r = "TITLE = (?P<title>.*): (?P<data>.*) \((?P<path>.*)\) \(Frames: (?P<frame>.*)\)"
m = re.match(r, str)
m.groupdict()

{'path': '/obj/FX_jet_contrails/_RENDER/smokeResidual_Beauty', 'frame': '1001-1151', 'data': 'mh 104_IJ_5070_Fireworks_residualSmoke_v3', 'title': 'MANTRA (IFD & RENDER)'}

【讨论】:

  • 对我不起作用,因为这是一个可以分析大量不同标题的工具,它并不总是这样。但我总是试图隔离由_分隔的信息,所以正则表达式将是必要的。
  • 添加了正则表达式 - 但这完全取决于哪些变化和哪些保持不变,以及哪些位是您感兴趣的。
【解决方案2】:

假设标题MANTRA (IFD &amp; RENDER): 的第一部分没有改变,并且您要提取的两个部分不包含空白字符,则以下内容应该有效:

import re
title = "MANTRA (IFD & RENDER): mh 104_IJ_5070_Fireworks_residualSmoke_v3 (/obj/FX_jet_contrails/_RENDER/smokeResidual_Beauty) (Frames: 1001-1151)"
substring = re.search(r": (\S+ \S+)", v).group(1)
print(substring)

产量:

'mh 104_IJ_5070_Fireworks_residualSmoke_v3'

这有效地抓取了第一个冒号 + 空格 : 之后的所有内容,并捕获了非空白字符的前两个部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-14
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多