4 python
大家好
我是python和编程的新手.我需要读取大块文本文件的块,格式如下所示:
<word id="8" form="hibernis" lemma="hibernus1" postag="n-p---nb-" head-"7" relation="ADV"/>
Run Code Online (Sandbox Code Playgroud)
我需要的form,lemma和postag信息.例如,对于我需要的hibernis,hibernus1以及n-p---nb-.
如何告诉python读取它到达表单,向前读取直到它到达引号",然后读取引号之间的信息"hibernis"?真的很挣扎.
到目前为止,我的尝试是删除标点符号,拆分句子然后从列表中提取我需要的信息.虽然让python迭代整个文件有困难,但我只能让它工作1行.我的代码如下:
f=open('blank.txt','r')
quotes=f.read()
noquotes=quotes.replace('"','')
f.close()
rf=open('blank.txt','w')
rf.write(noquotes)
rf.close()
f=open('blank.txt','r')
finished = False
postag=[]
while not finished:
line=f.readline()
words=line.split()
postag.append(words[4])
postag.append(words[6])
postag.append(words[8])
finished=True
Run Code Online (Sandbox Code Playgroud)
非常感谢任何反馈/批评
谢谢
如果是XML,请使用ElementTree来解析它:
from xml.etree import ElementTree
line = '<word id="8" form="hibernis" lemma="hibernus1" postag="n-p---nb-" head="7" relation="ADV"/>'
element = ElementTree.fromstring(line)
Run Code Online (Sandbox Code Playgroud)
对于每个XML元素,您可以轻松提取名称和所有属性:
>>> element.tag
'word'
>>> element.attrib
{'head': '7', 'form': 'hibernis', 'postag': 'n-p---nb-', 'lemma': 'hibernus1', 'relation': 'ADV', 'id': '8'}
Run Code Online (Sandbox Code Playgroud)
因此,如果您有一个包含大量wordXML元素的文档,那么这样的内容将从每个元素中提取您想要的信息:
from xml.etree import ElementTree
XML = '''
<words>
<word id="8" form="hibernis" lemma="hibernus1" postag="n-p---nb-" head="7" relation="ADV"/>
</words>'''
root = ElementTree.fromstring(XML)
for element in root.findall('word'):
form = element.attrib['form']
lemma = element.attrib['lemma']
postag = element.attrib['postag']
print form, lemma, postag
Run Code Online (Sandbox Code Playgroud)
如果您只有文件名,请使用parse()而不是fromstring().
| 归档时间: |
|
| 查看次数: |
7853 次 |
| 最近记录: |