❶ 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)
结果:
运行结果