我有devanagari中的数据,需要进行一些提取。这是几行的一个例子
तत् इदम् <गीता-शास्त्रम्>K7 <<<<<समस्त-वेद>K1-अर्थ>T6-सार>T6-संग्रह>T6-भूतम्>T2 <दुर्विज्ञेय-अर्थम्>K1 <<तत्-अर्थ>T6-आविष्करणाय>T6 अनेकैः <विवृत-<<<पद-<पद-अर्थ>T6-<वाक्य-अर्थ>T6>Di-न्यायम्>T6>Bs6 अपि <<अत्यन्त-विरुद्ध>K1-<अनेक-अर्थ>K1>K1 त्वेन लौकिकैः गृह्यमाणम् उपलभ्य अहम् विवेकतः <<अर्थ-निर्धारण>T6-अर्थम्>T4 संक्षेपतः विवरणम् करिष्यामि
<अभ्युदय-अर्थः>T4 अपि यः <प्रवृत्ति-लक्षणः>Bs6 धर्मः वर्णान् आश्रमान् च उद्दिश्य विहितः सः <<<<देव-आदि>Bs6-स्थान>T6-प्राप्ति>T6-हेतुः>T6 अपि सन् <<ईश्वर-अर्पण>T6-बुद्ध्या>T6 अनुष्ठीयमानः <सत्त्व-शुद्धये>T6 भवति <<फल-अभिसन्धि>T6-वर्जितः>T3
字母数字是文本的标记。我需要从行中提取二元化合物及其标签(紧跟在化合物后面的字母数字)。二元复合词是角括号中连字符的两个词
<अभ्युदय-अर्थः>
<गीता-शास्त्रम्>
<विवृत-<<<पद-<पद-अर्थ>T6-<वाक्य-अर्थ>T6>Di-न्यायम्>T6>Bs6
前两个都是二元化合物的例子,而最后一个不是。识别二元复合词的最简单方法是找到两个连字符的单词,用一组角括号括起来,后跟一个标记。
所以在提取完第一行之后,我应该得到一个列表,里面有这个
<गीता-शास्त्रम्>K7, <दुर्विज्ञेय-अर्थम्>K1
我试过的代码是这样的
import re
cw=re.findall('\<(.*?)\>',f)
tags=re.findall('[a-zA-Z0-9]+',f)
cc=re.sub("[\<\>a-zA-z0-9]",'',f)
print(cw,tags,cc)
不幸的是,这可以找到列表中的所有内容,但我无法通过这种方式将标记映射到它们的原始化合物。有没有更直观的方法
你可以用
见regex demo详细信息:
<([^<>]*)>
-<
,然后将除<
和>
之外的零个或多个字符捕获到组1中,然后>
(\w+)
-第2组:一个或多个单词字符李>见Python demo:
输出:
类似于@WiktorStribizew,但略有变化
[A-Z]\d
将查找1个字母后跟1个数字,例如“K7”输出
要定位找到的每个项目的位置,以下代码将输出索引号(第一个字符位置):
相关问题 更多 >
编程相关推荐