我正在尝试提取有关某个文件的信息。文件名是从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")
答案 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'