[英]Python, how to get substring between two known words
文字是這樣的:
<CUSTOMER_ID COL_ID>="4000.01">79997/CUSTOMER_ID>
<CUSTOMER_ID COL_ID>="4000.01">799/CUSTOMER_ID>
我想獲取數字“ 79997”和“ 799”
如何在Python中做到這一點?
我在做PySpark來處理XML文件
您可以使用肯定的后置斷言使用re.findall :
s ='<CUSTOMER_ID COL_ID="4000.01">79997</CUSTOMER_ID><CUSTOMER_ID COL_ID="4000.01">799</CUSTOMER_ID>'
data = re.findall(r"(?<=>)(\d+)<",s)
print sum(map(int,data))
80796
查找d\\+
一個或多個數字,其后跟一個>
,后跟一個<
如果要解析XML,則應使用XML解析器 。
例如,您可以讀取這樣的文件
<root>
<CUSTOMER_ID COL_ID="4000.01">79997</CUSTOMER_ID>
<CUSTOMER_ID COL_ID="4000.01">799</CUSTOMER_ID>
</root>
通過使用
import xml.dom.minidom
with open("test.xml") as f:
doc=xml.dom.minidom.parse(f)
result = []
for item in doc.getElementsByTagName("CUSTOMER_ID"):
result.append(item.firstChild.data)
這給你
>>> result
['79997', '799']
如果單詞是已知的,則可以使用string.replace()方法:
s2 = s1.replace("foo1", "foo2")
將用“ foo2”替換s1中所有出現的“ foo1”並將結果存儲在s2中。
對於您的特定情況,您可以用空白字符串替換已知單詞,然后將結果轉換為整數:
#store string in s1
s1 = 'CUSTOMER_ID COL_ID="4000.01">79997</CUSTOMER_ID>'
#replace known strings with blank strings and cast result to integer, store value in s2
s2 = int(s1.replace('CUSTOMER_ID COL_ID="4000.01">', '').replace('</CUSTOMER_ID>', ''))
print s2
79997
我了解到,最好在可能的情況下始終使用字符串方法,並且除非必要,否則避免進入re模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.