簡體   English   中英

如何在python中解析字符串

[英]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會同時提供這兩種庫。

然后,例如,您可以編寫代碼以在樹中搜索具有值為“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM