python - 在python中剪切或拆分字符串
问题描述
由于某种原因,我无法弄清楚这一点。当 py 脚本打印输出时,我有一个类似的字符串(必须隐藏一些信息):
<input name="submit" onclick="var srvstr='Friday 4th of May 2018';someweb(srvstr);document.someemail.securitystring.value='';return false;" src="images/button-submit.png" type="image"/>
我只想Friday 4th of May 2018
从字符串中获取。实现这一目标的最简单或最好的方法是什么?我在这里浏览了一些旧文档,并尝试类似地复制它,我认为切割和切片对我来说是最令人困惑的。谢谢
解决方案
既然你是从 BeautifulSoup 中得到这个的,你可能正在做这样的事情来获取input
标签:
>>> str(tr.input)
'<input name="submit" onclick="var srvstr=\'Friday 4th of May 2018\';someweb(srvstr);document.someemail.securitystring.value=\'\';return false;" src="images/button-submit.png" type="image"/>'
相反,让 BS4 一直解析到onclick
属性值:
>>> tr.input['onclick']
"var srvstr='Friday 4th of May 2018';someweb(srvstr);document.someemail.securitystring.value='';return false;"
当然,它仍然很混乱,但并没有那么糟糕——而且,更重要的是,我们知道它是引用的 Javascript 代码以适应 HTML。所以我们知道什么可以和不可以在其中不逃避,所以我们不必担心很多否则可能永远不会发生但你不能确定的事情(因此肯定会在 15 分钟后发生)您部署并进入睡眠状态)。
>>> re.search(r"srvstr='(.*?)'", tr.input['onclick'])
<_sre.SRE_Match object; span=(4, 35), match="srvstr='Friday 4th of May 2018'">
>>> re.search(r"srvstr='(.*?)'", tr.input['onclick']).group(1)
'Friday 4th of May 2018'
现在我们不必对他们的日期格式进行逆向工程,希望我们做对了;这只是他们在该srvstr
变量中放入的任何字符串。(尽管如果您真的想将其解析为datetime
对象或其他东西……)
当然,你永远无法保证解析其他人的文本,但如果这停止工作,那似乎很可能是因为他们已经完全改变了他们onclick
处理处理程序的方式,在这种情况下,这段代码应该因异常而严重失败,而不是开始产生垃圾。
推荐阅读
- javascript - 在javascript中将json从多个父ID转换为单父
- java - 如何在 Spring Boot 测试中连接到内存中的 HSQLDB 以进行查询
- python - 如何使用 Python 从 [*] 等引用中清除文本
- php - isset 函数提交 while 循环 PHP 中的所有按钮
- javascript - 使用 for 循环为数组提供错误
- python - ValueError:没有为任何变量提供梯度(Keras 2.4,Tensorflow 2.3.0)
- javascript - 检测有关音频/视频 play() 命令的当前上下文
- google-cloud-platform - 迁移到 v1 元数据服务器端点。识别流程
- javascript - 在不同父元素中的元素上使用 .closest
- javascript - 解释一下javascript