首页 > 解决方案 > 在 python 上使用正则表达式进行复杂的数据清理

问题描述

标签: pythonregex

解决方案


类似于@WiktorStribizew,但略有不同。

[A-Z]\d将准确查找 1 个字母后跟 1 个数字,例如 'K7'

import re
f = "तत् इदम् <गीता-शास्त्रम्&gt;K7 <<<<<समस्त-वेद&gt;K1-अर्थ>T6-सार&gt;T6-संग्रह>T6-भूतम्&gt;T2 <दुर्विज्ञेय-अर्थम्>K1  <<तत्-अर्थ>T6-आविष्करणाय>T6 अनेकैः <विवृत-<<<पद-<पद-अर्थ>T6-<वाक्य-अर्थ>T6>Di-न्यायम्&gt;T6>Bs6 अपि <<अत्यन्त-विरुद्ध&gt;K1-<अनेक-अर्थ>K1>K1 त्वेन लौकिकैः गृह्यमाणम् उपलभ्य अहम् विवेकतः <<अर्थ-निर्धारण>T6-अर्थम्>T4 संक्षेपतः विवरणम् करिष्यामि&quot;
cw = re.findall(r'<[^<>]+>[A-Z]\d', f)
print(cw)

输出

['<गीता-शास्त्रम्&gt;K7', '<समस्त-वेद&gt;K1', '<दुर्विज्ञेय-अर्थम्>K1', '<तत्-अर्थ>T6', '<पद-अर्थ>T6', '<वाक्य-अर्थ>T6', '<अत्यन्त-विरुद्ध&gt;K1', '<अनेक-अर्थ>K1', '<अर्थ-निर्धारण>T6']

为了定位找到的每个项目的位置,下面的代码将输出索引号(第一个字符位置):

for item in cw:
    print(f.index(item))

9
32
80
105
152
164
202
222
285

推荐阅读