python re.search
在re.search找到匹配项后,group(1)中的数字1代表匹配到的字符串中第一个捕获组(capturing group)的内容。
具体分析如下:
捕获组的概念:在正则表达式中,圆括号()定义了一个捕获组。捕获组会记住正则表达式中该部分匹配到的文本内容,以便后续使用。例如,在r"Retry in (\d+) seconds"这个正则表达式中,(\d+)就是一个捕获组。它会捕获Retry in和seconds之间的一个或多个数字字符。
group()方法的使用:
group()方法用于获取匹配到的整个字符串。
group(n)(其中n为正整数)用于获取第n个捕获组匹配到的内容。这里的n从1开始计数。所以group(1)获取的就是第一个捕获组匹配到的内容,在这个例子中,就是Retry in和seconds之间的数字,比如10(如果res字符串中有Retry in 10 seconds这样的内容)。
如果正则表达式中有多个捕获组,group(2)会获取第二个捕获组的内容,以此类推。
在你的代码中,if ex_s:条件判断确保re.search找到了匹配项,然后 ...
state和status的区别
英语单词state和status的区别
state:比较常用,各种状态都可以用它,但是它更着重于一种心理状态或者物理状态。Status:用在人的身上一般是其身份和地位,作“状态,情形”讲时,多指政治和商业。
state倾向于condition,是一种延续性的状态。status常用于描述一个过程中的某阶段(phase),类似于C语言中枚举型变量某一个固定的值,这个值属于一个已知的集合。比如淘宝买家问卖家“我的网购现在是什么状况?”这个问题的背景是讲话双方都清楚,交易状态有“买家选购”“买家已付款”“卖家已发货”“买家已签收”或者有“买家已投诉”等等状态。这些状态描述一件事情发展过程中的不同阶段。而且,这些阶段的先后顺序也是双方默许的。所以在这里可以问“What’s the status of my purchase?”,此处用state不太贴切,如果硬用上去从语感上可能听着别扭。
说物态变化用state再恰当不过。如果说一个物质的四种状态,可以说“solid state”,但如果你说“solid status”,第一,这两个词的组合不像是描述物态,更像是在说“确定的状况(solid产 ...
重新认识vue之事件阻止冒泡
冒泡的表现近期用vue做了一个需求,大概是同一个区域,点击不同位置有不同的响应函数,还有个总的响应函数,好吧,如下图所示:
他们的DOM结构如下:
12345678<div v-for="(item, index) in listData" @click="handleClick3"> <el-col :span="grid"> <div @click="handleClick1"></div> </el-col> <el-col @click="handleClick2"> </el-col></div>
冒泡在这里的表现就是当用户点击图中事件1或事件2区域时,事件3也会执行。这是因为时间冒泡机制,导致点击’handleClick1’时’handleClick3’ 也会响应。在大部分的时候这都是不希望的, 同样我这里也 ...
Extraneous non-props attributes (id) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.
問題分析 1报错翻译无关的非道具属性(类)被传递给组件,但不能被自动继承,因为组件呈现片段或文本根节点。
存在的问题根据报错信息首先检查是否传递了没有解析的属性,可以检查一下你用的第三方的组件,或者自己编写的组件,是否 存在没有解析的属性,例如:class等属性
其次,还有一个重要原因是组件呈现片段或文本根节点,即组件暴露在了最外层。也就是vue内置或封装的组件、使用的第三方组件是否直接放在了template下。外面套一层div即可解决。
問題分析 2大致意思就是 ➡ 额外的非prop属性(xxx)已传递给组件,但由于你的组件渲染片段和文本根节点,无法自动继承。
当你的子组件中有多个根节点时,Vue使用透传Attributes机制也没有办法确定要在哪一个根节点继承属性时,就报出了上诉警告。
透传Attributes
关于什么是透传Attributes,官方说得已经很清楚了就是不好找,阅读起来也不算难。文章中的蓝字链接都可以跳转。给个链接 ➡透传 Attributes
解决办法
第一种情况,就是你有需要传输一个prop属性的数据给子组件,但是你在子组件中忘记用defineProp ...
Mac安装mysqlclient报错:Can not find valid pkg-config name
错误信息12345678910111213141516171819202122232425262728293031323334353637383940414243Collecting mysqlclient Using cached mysqlclient-2.2.1.tar.gz (89 kB) Installing build dependencies ... done Getting requirements to build wheel ... error error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> [24 lines of output] Trying pkg-config --exists mysqlclient Command 'pkg-config --exists mysqlclient' returned non ...
查看本机的出网ip地址
实现原理请求一个公网服务,对方服务接收到的请求ip即为本机的出网ip地址。可以使用专门提供ip查询服务的网站,对方会将获取到的ip返回给你。
1234567curl ifconfig.mecurl icanhazip.comcurl curlmyip.comcurl ip.appspot.comcurl ipinfo.io/ipcurl ipecho.net/plaincurl www.trackip.net/i
selenium:如何解决打开网页加载时间过长问题
1234567891011121314151617181920212223from selenium import webdriver driver = webdriver.Chrome() # 设置页面加载时间driver.set_page_load_timeout(5) start = time.time() try: driver.get(driver.get('https://www.baidu.com'))except: # 捕获timeout异常 driver.execute_script('window.stop()') # 执行Javascript来停止页面加载 window.stop() end = time.time()# 页面加载所需时间print(end-start) el = driver.find_element("name", value='wd')#对元素输入文本el.send_ ...
pip-compile & requirements.in
制作 requirements.in123456789101112131415fastapi~=0.111.0starlette~=0.37.2SQLAlchemy~=2.0.29pydantic~=1.9.0uvicorn~=0.29.0PyMySQL~=1.0.3mysql-connector-python~=8.3.0requests~=2.31.0sonyflake-py~=1.3.0retrying~=1.3.4python-dateutil~=2.8.2redis~=5.0.4pip-tools~=7.4.1pytest~=8.2.1python-jose~=3.3.0
安装 pip-tools1pip install pip-tools
生成 requirements.txt1pip-compile --strip-extras requirements.in
OTP动态口令
如上图,是一种基于时间同步的OTP计算方式,是通过客户端和服务器持有相同的密钥并基于时间基数,服务端和客户端采用相同的Hash算法,计算出长度为六位的校验码。当客户端和服务端计算出的校验码相同是,那么验证通过。
python: memory_profiler包,记录代码内存使用情况,查找内存泄漏原因
前言最近用paddlepaddle,发现训练每个epoch时,内存都会增加几百兆,这明显就是出现了内存泄漏。python中内存泄露的原因比C++(一般就是动态内存分配)更加隐蔽,可以借助memory_profiler这个包监控python代码的内存使用。
安装直接pip安装就完事了
1pip install memory_profiler
简单使用只需要在.py文件中导入memory_profiler包中的profiler方法,然后作为某个函数的装饰器,就能够记录该函数内部代码的内存使用情况了:
12345678910111213141516171819# learn_mprof.pyfrom memory_profiler import profileimport numpy as np@profiledef count(): print('+++++++++++') a = 0; b = 1; c = a + b print('a+b=c') print('{}+{ ...