字符串简单处理的话用字符串切片很容易实现,
形如:a="Hello Python!"
,a[-7:]="Python!"
,
规则:大于等于冒号前的小于冒号后的,两端可以省略,正的开头是0,小的开头是-1。
简单,短的字符串还好,复杂的,长的麻烦了。
我们用原始的方法来处理:回归原始,回归简单!
实例一:
有如下一串字符串,这是 xpath 路径,我想过滤掉中括号里的内容:
"/html/body/div[@id='wrapper']/div[@id='head']/div[@class='head_wrapper']/div[@class='s_form']/div[@class='s_form_wrapper soutu-env-nomac soutu-env-index']/form[@id='form']/span[@class='bg s_btn_wr']/input[@id='su']"
预想效果如下:
/html/body/div/div/div/div/div/form/span/input
s = "/html/body/div[@id='wrapper']/div[@id='head']/div[@class='head_wrapper']/div[@class='s_form']/div[@class='s_form_wrapper soutu-env-nomac soutu-env-index']/form[@id='form']/span[@class='bg s_btn_wr']/input[@id='su']" s_new = "" # s为原始字符串,s_new为新字符串 k = 0 # 设置一个开关,当为0时,我就拼接,为1时舍去 # 遍历字符串 for a in s: # 过滤掉中括号里的 if(a == '['): k = 1; elif(a == ']'): k = 0; continue; # 符合要求的进行拼接 if(k == 0): s_new = s_new + a print(s_new)
运行效果图:
实例二
在实例一的基础上,只保留中括号里为 @id 的部分。
预期效果如下:
/html/body/div[@id='wrapper']/div[@id='head']/div/div/div/form[@id='form']/span/input[@id='su']
中间这样改造一下,当我匹配到左括号时,看看括号后是不是 @id:
k = 0 i = -1 # i是临时加的索引跟踪,判断a的位置 for a in s: i = i + 1 if(a == '['): if(s[i:i+4] != "[@id"): # 运用了字符串切片 k = 1; elif(a == ']' and k == 1): k = 0; continue; if(k == 0): s_new = s_new + a
运行效果图:
喜欢的点个赞❤吧!