基于命名约定提取字符串的一部分

2024-09-23 14:32:50 发布

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

我想提取某个文件的信息。文件名是从xml文件中提取的。你知道吗

我想要的信息存储在文件名中,我想知道如何提取字符串中第2和第3个句点之间的字母。你知道吗

例如,名称是从xml中提取出来的,它存储为一个类似于"aa.bb.cccc.dd.ee"的字符串,我需要找到在我提取的每个字符串中"cccc"实际是什么(大约50个)。你知道吗

我做了一些搜索和一些玩切片等,但我甚至不能接近。你知道吗

我不能只指定[6:11]范围内的字母,因为字符串的长度和我要查找的部分之前的字符数是不同的。你知道吗

更新:添加了解决方案。

由于我试图分割和提取部分的数据来自一个xml文件,它被存储为一个元素。你知道吗

我遍历了遗产名称列表,并将每个遗产的EstateName属性存储为一个变量

for element in EstateList: EstateStr = element.getAttribute('EstateName')

然后我对这个新变量使用了split,它包含字符串而不是元素,并将它们写入所需的文本文件:

asset = EstateStr.split('.', 3)[2] z.write(asset + "\n")


Tags: 文件字符串名称信息元素文件名字母xml
3条回答

拆分句点上的字符串:

third_part = inputstring.split('.', 3)[2]

为了提高效率,我在这里使用了^{};例如,在这里拆分dd.ee部分毫无意义。你知道吗

然后[2]索引从分割中挑选出第三个结果,即cccc字符串:

>>> "aa.bb.cccc.dd.ee".split('.', 3)[2]
'cccc'

如果您确定它总是采用这种格式(5个字符块,由4个小数点分隔),您可以在'.'上拆分,然后索引第三个元素[2]。你知道吗

>>> 'aa.bb.cccc.dd.ee'.split('.')[2]
'cccc'

这适用于不同的字符串长度,因此您不必像第一次提到的那样担心使用切片的绝对位置。你知道吗

>>> 'a.b.c.d.e'.split('.')[2]
'c'
>>> 'eeee.ddddd.ccccc.bbbbb.aaaa'.split('.')[2]
'ccccc'

您可以使用re模块提取2和第三个点之间的字符串。你知道吗

>>> re.search(r'^[^.]*\.[^.]*\.([^.]*)\..*', "aa.bb.cccc.dd.ee").group(1)
'cccc'

相关问题 更多 >