簡體   English   中英

如何使用模式從字符串中獲取特定數據

[英]How to get specific data from a string using pattern

我是 python 的新手,我有這個字符串:

  row =  <aa>hello</aa><bb>bello</bb><aa>great</aa><cc>today</cc><aa>later</aa><bb>fine</bb>

我需要獲取 aa 中的所有數據:

hello,great,later

我的代碼是:

 allAA  =[]
 patternAA = "<aa>(.*)</aa>"
 allAA = '\''+(re.search(patternAA, str(row))).groups() +'\','

我得到這個結果 = <aa>hello</aa><bb>bello</bb><aa>great</aa><cc>today</cc><aa>later</aa>我怎樣才能得到我需要的數據?

您可以使用 a.findall() 方法列出您的正則表達式的所有匹配項

import re

row =  "<aa>hello</aa><bb>bello</bb><aa>great</aa><cc>today</cc><aa>later</aa><bb>fine</bb>"
allAA = re.findall(r'<aa>(.*?)</aa>', row)

print(allAA) # ['hello', 'great', 'later']

您的代碼有兩個問題:

  1. 您需要使用非貪婪捕獲組,使用? .
  2. 您應該使用re.findall()來獲取捕獲的組,而不是re.search()

通過這兩個修復,我們得到以下信息:

import re
row =  "<aa>hello</aa><bb>bello</bb><aa>great</aa><cc>today</cc><aa>later</aa><bb>fine</bb>"
patternAA = re.compile(r"<aa>(.*?)</aa>")
result = re.findall(patternAA, row)

# Prints ['hello', 'great', 'later']
print(result)

暫無
暫無

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

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