❶ python 文件編碼問題導致文件不能寫入
#adjustyourcodelike:
definclude(a,b,c):
importre
#importcodecs#unusage
in_put=open(a)
out_put=open(b,'w')
inc_handle=open(c)#include=open(c)the"include"isafunctionorvar?
line=in_put.readlines()
include_line=inc_handle.readlines()
include_list=[]
foriininclude_line:
result=re.sub(r' ','',i)
include_list.append(result)#removelineendedchar?
#orremovenotdigitalchar?
foriinline:#lost":"atlineend
contract_no=re.search(r'contract_no=(d+)',i)
ifcontract_no:
ifcontract_no.group(1)ininclude_list:
out_put.write(i)
in_put.close()
inc_handle.close()
out_put.close()
or more pythonic:
definclude(a,b,c):
importre
withopen(c)ashandle:
inc=re.findall(r'd+',handle.read())
withopen(b,'w')asostream,open(a)asistream:
foriinistream:
contract_no=re.search(r'contract_no=(d+)',i)
ifcontract_noandcontract_no.group(1)ininc:
ostream.write(i)
❷ python中findall
這個是Python re正則模塊
就是按照p規則匹配html的文本內容。
p的規則具體是什麼意思,你要去學習Python 正則語法。
❸ python正則表達式re.findall(r"\b\w+\b", s)中的r是什麼意思
Python中字元串前面加上
r
表示原生字元串,
與大多數編程語言相同,正則表達式里使用"\"作為轉義字元,這就可能造成反斜杠困擾。假如你需要匹配文本中的字元"\",那麼使用編程語言表示的正則表達式里將需要4個反斜杠"\\\\":前兩個和後兩個分別用於在編程語言里轉義成反斜杠,轉換成兩個反斜杠後再在正則表達式里轉義成一個反斜杠。Python里的原生字元串很好地解決了這個問題,這個例子中的正則表達式可以使用r"\\"表示。同樣,匹配一個數字的"\\d"可以寫成r"\d"。有了原生字元串,你再也不用擔心是不是漏寫了反斜杠,寫出來的表達式也更直觀。
❹ python正則表達式findall的匹配問題
python的正則中用()會進行匹配,所以返回結果是['',''],就是兩個()中的匹配。要想達到原來的匹配效果,就是把4匹配出來,有兩種解決方法:
1.最外層加個大括弧,變成:m = re.findall('(([0-9])*4([0-9])*)',
'[4]'),返回結果的第一個元素就是匹配結果了。
2.去除()的匹配結果返回,在括弧前面加入?:,變成m =
re.findall('(?:\d)*4(?:\d)*', '[4]'),返回結果就是要匹配的結果了。
❺ python中的正則表達式findall
re.findall(r"^(?:027)?\d{8}$","02712345678")
--需要使用(?:),否則只會列印分組(027)
❻ 小白求助大神python中findall()和sub()的結果
第一個問題,你搞錯了,不是逗號,是兩個空字元串,返回的結果列比里其實有三個元素。雖然看起來很像兩個。所以,它找到了符合條件的三個對象,也就是['section{First', '', ''] 。右大括弧的位置是理解的關鍵。
第二個問題。sub方法是用你指定的字元串替換『匹配』上的字元串。前面我們匹配上了3個位置,將它們逐一替換,就得到了'subsection{}subsection{}}subsection{}'。注意其中那個蹦單的右大括弧。
第三個問題。你使用了sub的分組引用功能。它在替換的同時會用匹配上的內容替換『1』。你在前面匹配上了一個字元串和兩個空格,將它們依次代入問題二結果中的三對大括弧就能得到最終結果'subsection{section{First}subsection{}}subsection{}'
更多內容參考正則表達式和re模塊
❼ python的re,findall 忽略大小寫
沒那幾個人說的那麼麻煩,只需要加一個參數,如下:
import re
SHA = 'AC:B0:F3:26:EA:C1'
result1 = re.findall(r'ac:.*:c1',SHA) # 這樣是搜不到的,因為大小寫不匹配
result2 = re.findall(r'ac:.*:c1',SHA,re.IGNORECASE) # 這是能搜到的,已忽略大小寫
print('未忽略大小寫搜索結果:',result1)
print('忽略大小寫搜索結果:',result2)
結果:
運行結果