[英]How to parse a string in 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">
....
謝謝!
正則表達式是解決方案。
使用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
免責聲明:此答案適用於快速和骯臟的腳本,可能缺乏魯棒性和效率。 此處的建議可能不適用於存活時間超過幾個小時的代碼。
如果您不願意學習正則表達式(並且您應該願意學習正則表達式!),則可以拆分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會同時提供這兩種庫。
HTMLParser
: https : //docs.python.org/2/library/htmlparser.html ElementTree
: https : //docs.python.org/2/library/xml.etree.elementtree.html 然后,例如,您可以編寫代碼以在樹中搜索具有值為“ uber_token”的屬性“ name”的節點,並從中獲取“ value”屬性。
非常笨拙的Python 2示例,不需要太多了解ElementTree
(可能需要簡單的更正):
import xml.etree.ElementTree as ET
tree = ET.parse('myfile.xml')
root = tree.getroot()
values = []
for element in root:
if element.attrib['name'] == 'uber_token':
values.append(element.attrib['value'])
Python帶有它自己的xml解析模塊: https : //docs.python.org/3.2/library/xml.html?highlight= xml#xml,因此您不必使用任何第三方解析庫。 如果您不願意或不允許使用它.....您可以隨時使用regex,但是在解析XML時我會避免使用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.