第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

re.findall表現(xiàn)得很奇怪

re.findall表現(xiàn)得很奇怪

re.findall表現(xiàn)得很奇怪源字符串是:# Python 3.4.3s = r'abc123d, hello 3.1415926, this is my book'這是我的模式:pattern = r'-?[0-9]+(\\.[0-9]*)?|-?\\.[0-9]+'但是,re.search可以給我正確的結(jié)果:m = re.search(pattern, s)print(m)  # output: <_sre.SRE_Match object; span=(3, 6), match='123'>re.findall 只是轉(zhuǎn)出一個(gè)空列表:L = re.findall(pattern, s)print(L)  # output: ['', '', '']為什么不能re.findall給我預(yù)期的清單:['123', '3.1415926']
查看完整描述

2 回答

?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

s = r'abc123d, hello 3.1415926, this is my book'print re.findall(r'-?[0-9]+(?:\.[0-9]*)?|-?\.[0-9]+',s)

escape當(dāng)你使用時(shí),你不需要兩次raw mode。

輸出:['123', '3.1415926']

返回類型也是一個(gè)列表。strings如果你想要返回類型integersfloats使用map

import re,ast
s = r'abc123d, hello 3.1415926, this is my book'print map(ast.literal_eval,re.findall(r'-?[0-9]+(?:\.[0-9]*)?|-?\.[0-9]+',s))

輸出: [123, 3.1415926]


查看完整回答
反對(duì) 回復(fù) 2019-05-27
?
慕尼黑的夜晚無繁華

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊

這里有兩點(diǎn)需要注意:

  • re.findall 如果正則表達(dá)式模式中包含捕獲組,則返回捕獲的文本

  • r'\\.'模式中的部分匹配兩個(gè)連續(xù)的字符,\以及除換行符之外的任何字符。

findall參考文獻(xiàn)

如果模式中存在一個(gè)或多個(gè)組,則返回組列表; 如果模式有多個(gè)組,這將是一個(gè)元組列表。結(jié)果中包含空匹配,除非它們觸及另一個(gè)匹配的開頭。

請(qǐng)注意,要使re.findall返回只匹配值,通??梢?/p>

  • 刪除多余的捕獲組(例如(a(b)c)- > abc

  • 將所有捕獲組轉(zhuǎn)換為非捕獲(即替換((?:),除非有反向引用引用模式中的組值(請(qǐng)參閱下文)

  • 使用re.finditer代替([x.group() for x in re.finditer(pattern, s)]

在您的情況下,findall返回所有已捕獲的文本,因?yàn)槟?code>\\在r''字符串文字中嘗試匹配文字\

要匹配數(shù)字,您需要使用

-?\d*\.?\d+

正則表達(dá)式匹配:

  • -? - 可選的減號(hào)

  • \d* - 可選數(shù)字

  • \.? - 可選的小數(shù)分隔符

  • \d+ - 1位或更多位數(shù)。

演示

這是IDEONE演示

import re
s = r'abc123d, hello 3.1415926, this is my book'pattern = r'-?\d*\.?\d+'L = re.findall(pattern, s)print(L)


查看完整回答
反對(duì) 回復(fù) 2019-05-27
  • 2 回答
  • 0 關(guān)注
  • 1817 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)