在python中剪切或拆分字符串
不知什么原因,我搞不清楚。 我有一个字符串,类似于py脚本打印输出时的字符串(必须隐藏一些信息):在python中剪切或拆分字符串,python,string,Python,String,不知什么原因,我搞不清楚。 我有一个字符串,类似于py脚本打印输出时的字符串(必须隐藏一些信息): 我只想从字符串中获取2018年5月4日星期五的。实现这一点最简单或最好的方法是什么? 我在这里翻阅了一些旧文档,并试图以类似的方式复制它,我认为剪切和切片对我来说是最令人困惑的。谢谢既然您是从BeautifulSoup获得此功能,那么您可能正在执行类似操作以获取输入标记: >>> str(tr.input) '<input name="submit" onclick="
我只想从字符串中获取2018年5月4日星期五的。实现这一点最简单或最好的方法是什么?
我在这里翻阅了一些旧文档,并试图以类似的方式复制它,我认为剪切和切片对我来说是最令人困惑的。谢谢既然您是从BeautifulSoup获得此功能,那么您可能正在执行类似操作以获取输入
标记:
>>> 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"/>'
当然,它仍然很凌乱,但并没有那么糟糕,更重要的是,我们知道它引用了Javascript代码以适应HTML。因此,我们知道什么可以和不可以在其中不逃跑,所以我们不必担心很多事情,否则可能永远不会发生,但你不能确定(因此肯定会发生在你部署和睡觉15分钟后)
重新搜索(r“srvstr=”(.*?”,tr.input['onclick']))
>>>重新搜索(r“srvstr=”(.*?”,tr.input['onclick'])。组(1)
“2018年5月4日星期五”
现在,我们不必对他们的日期格式进行反向工程,希望我们做对了;这只是他们在srvstr
变量中放入的任何字符串。(尽管如果您真的想将其解析为datetime
对象或其他东西…)
当然,解析别人的文本时,你永远无法保证任何事情,但如果这一切停止工作,很可能是因为他们完全改变了执行
onclick
处理程序的方式,在这种情况下,此代码应该会出现异常并严重失败,而不是开始产生垃圾。您的字符串是此HTML
标记,还是包含此标记的某个完整HTML页面?如果是这样的话,我会首先使用HTML解析器,获取onclick
属性,然后再查看在该属性的值中解析JavaScript代码片段(已经转义了,很容易处理)。如果您已经这样做了,它可以像srvstr='(*)这样的正则表达式一样简单“
。您是否总是在查找字符串文字?如果是这样,那么就可以在上面调用str.find('2018年5月4日星期五')
,如果找到了,就完成。你可以把那个“星期五…”
字符串传下去。我猜虽然它每天都是不同的字符串…@abarnert我使用过bs4和lxml解析器。将其解析为文本也有点棘手<代码>@pushkin是的,它每天都在变化非常感谢您的详细解释。虽然我不喜欢js,但今天我将对它进行测试,并对设置进行调整,看看会发生什么happens@uzdisral是的,我假设你不想把JS解析为JS。这就是为什么我用一个简单的正则表达式解析它,希望它能随着字符串的日复一日的变化而工作,但如果他们完全重写JS代码生成器,它会立即中断。我会将代码和页面发送给你,看看我做了什么以及如何做,但我不能在这里发布,只是出于某种原因:)
>>> 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"/>'
>>> tr.input['onclick']
"var srvstr='Friday 4th of May 2018';someweb(srvstr);document.someemail.securitystring.value='';return false;"
>>> 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'