根据命名约定提取字符串的一部分

时间:2014-07-29 12:32:51

标签: python string extract

我正在尝试提取有关某个文件的信息。文件名是从xml文件中提取的。

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

EG。 name是从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")

3 个答案:

答案 0 :(得分:2)

如果您确定它将始终具有此格式(5个字符块,由4个小数点分隔),您可以在'.'上拆分,然后将第3个元素[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'

答案 1 :(得分:0)

在句号中分割字符串:

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

我已经使用str.split()来限制效率;例如,在这里拆分dd.ee部分毫无意义。

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

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

答案 2 :(得分:0)

您可以使用re模块提取2到3点之间的字符串。

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