2014-06-26 336 views
0

沒有任何第三方庫(比如美麗的湯),在PYTHON中解析字符串的最簡單方法是什麼?如何解析python中的字符串

鑑於下面的文本,我想「uber_token」的內容被解析出來,即。 「123456789」

....

<form id="blah" action="/p-submi.html" method="post"><input type="hidden" id="" name="uber_token" value="123456789"/><div class="container-info"> 

....

謝謝!

+0

是否需要標記所有元素和屬性或者簡單地提取'value =「XXX」'部分?如果它只是後者,請使用正則表達式。 –

+0

只需要值=「xxx」。但是有多個value =「**」實例可能有不同的關聯名稱。 – user1144251

+0

如果屬性及其順序在每個元素中都是一致的,那麼您可以使用正則表達式,但爲什麼您不願意使用庫? –

回答

2

正則表達式是解決方案。

使用import re

>>> import re 
>>> s = '<form id="blah" action="/p-submi.html" method="post"><input type="hidden" id="" name="uber_token" value="123456789"/><div class="container-info"' 
>>> regex=re.search(r'name="uber_token" value="([0-9]+)"',s) 
>>> print regex.group(1) 
123456789 
0

免責聲明:這個答案是快速和骯髒的腳本,並且可能缺乏穩健性和效率。這裏的建議可能不應該用於存活超過幾個小時的代碼。

如果你不願意學習正則表達式(你應該願意學習正則表達式!),你可以拆分爲value="。可能真的效率低下,但簡單易於調試。

values = [] 

with open('myfile.txt') as infile: 
    for line in infile: 
     candidates = line.split('value="') 
     for s in candidates[1:]: #the first token is not a value 
      try: #test if value is a number 
       val = int(s.split('"')[0]) 
      except: 
       continue 
      values.append(val) 

如果你專門找在HTML或XML,Python有兩個庫。

然後,例如,您可以編寫代碼在樹中搜索與具有值 「uber_token」 屬性 「名」 的節點,並從中獲取「value」屬性。

不需要學習太多ElementTree,希望能非常愚蠢的Python 2例(可能需要簡單修改):

​​