簡體   English   中英

正則表達式 <.*?>

[英]Regular expression <.*?>

我是新來的Python,並一直在尋找的文字清潔的例子,如對Kaggle,且對制止和停用詞部分的一些問題。

for sentence in final_X:
  sentence = sentence.lower()                 # Converting to lowercase
  cleanr = re.compile('<.*?>')
  sentence = re.sub(cleanr, ' ', sentence)        #Removing HTML tags
  sentence = re.sub(r'[?|!|\'|"|#]',r'',sentence)
  sentence = re.sub(r'[.|,|)|(|\|/]',r' ',sentence)        #Removing Punctuations

cleanr = re.compile('<.*?>')是什么意思? 我知道它用於刪除 HTML 標簽,但我對<.*?>含義感到困惑。

<.*?>被稱為正則表達式模式 該模式特別查找< ,然后是任意數量的字符.*后跟> 期間. 表示“任何字符”,星號*表示“0 次或多次”。 問號? *后面是惰性量詞,表示它應該使用盡可能少的字符。 這對於這樣的情況很重要:

<p> 2 > 1 </p>

如果問號不存在,則模式將匹配: <p> 2 > 1 </p>

而如果問題那里,它會尋找 FIRST >跟在<像這樣: <p> 2 > 1 </p>這是期望的結果

這是一個正則表達式模式。 此圖案<.*?>指具有串<后跟任何字符(由點編碼)重復任意次數(由星形編碼),最后>星后問號是使其懶惰,即匹配在<之后遇到的第一個>處停止。

請參閱https://medium.com/factory-mind/regex-tutorial-a-simple-cheatsheet-by-examples-649dc1c3f285以了解有關正則表達式的更多信息。

其實可以

sentence = re.sub('<.*?>', ' ', sentence)

代替

cleanr = re.compile('<.*?>')
sentence = re.sub(cleanr, ' ', sentence)

否則cleanr = re.compile('<.*?>')應該在for循環之前進行優化。

暫無
暫無

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

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