簡體   English   中英

如何在python中提取兩個字符之間的子字符串?

[英]How can I extract substrings between two characters in python?

我有一個從 HTML 代碼轉換而來的討厭的字符串,如下所示:

<p><topic url="car-colours">Toyota Camry</topic> has <a href="/colours/dark-red">Dark Red</a><span> (2020)</span>, <a href="/colours/pearl-white">Pearl White</a><span> (2016 - 2017)

我想從這個字符串中提取顏色的名稱並將它們放在一個列表中。 我在想也許我提取了 ">" 和 "<" 字符之間的所有子字符串,因為所有顏色都包含在其中,但我不知道如何。

我的目標是有一個列表來存儲豐田凱美瑞的所有顏色,例如: toyota_camry_colours = ["Dark Red", "Pearl White"]

任何想法我怎么能做到這一點? 在 bash 中,我會使用 grep 或 awk 之類的東西,但不知道 python。

BeautifulSoup 模塊旨在解析 HTML。

from bs4 import BeautifulSoup 

str = """\
<p><topic url="car-colours">Toyota Camry</topic> has <a href="/colours/dark-red">Dark Red</a><span> (2020)</span>, <a href="/colours/pearl-white">Pearl White</a><span> (2016 - 2017)"""

soup = BeautifulSoup(str, 'html.parser')
for link in soup.find_all('a'):
    print( link.text )

輸出:

Dark Red
Pearl White

一個簡單的正則表達式會幫助它/colours/([\\w-]+)

import re

txt = '<p><topic url="car-colours">Toyota Camry</topic> has <a href="/colours/dark-red">Dark Red</a><span>' \
      ' (2020)</span>, <a href="/colours/pearl-white">Pearl White</a><span> (2016 - 2017)'
colors = re.findall(r"/colours/([\w-]+)", txt)
print(colors)  # ['dark-red', 'pearl-white']

colors = [" ".join(word.capitalize() for word in color.split("-")) for color in colors]
print(colors)  # ['Dark Red', 'Pearl White']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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