在python脚本中搜索并替换字符串中的多个模式

时间:2014-11-25 18:22:46

标签: python regex bash

我正在尝试创建一个执行以下操作的python脚本:

  1. 提示用户输入字符串
  2. 'hxxps://''u='
  3. 删除所有字符
  4. 替换'hxxp-3A__' with 'http://'
  5. 将所有'_'替换为'/'
  6. 删除'&d='到字符串末尾的所有字符(包括& d)
  7. 将提示用户输入以进行解码的字符串示例:

    <b>hxxps://emailfiltervendor.com/v2/url?u=</b>hxxp-3A__developer.apple.com_contact<b>_&d=AAMC-Q&c=zQ6tLaF7dShu6emFdFLQLQ&r=Omg3VPeUzekjh8aAoyWWiIblQyDVxual9qHMwJiqOpQ&m=MtC66x1fgSnrN9foA74EcYf6Ekmp0vmUDRLTGVtTQcU&s=xHGspXPb32hmzbF1rkJ2jWRvS011WqvwsU1LSM4zQdU&e=</b>
    

    输出应该是什么样的:

    hxxp://developer.apple.com/contact/
    

    我尝试了以下脚本的各种组合,但似乎无法搜索/替换超过1个字符串(对于http://为http-3a__)。我上次的脚本尝试包括以下内容:

    !/usr/bin/python
    import re
    
    str = "http-3A__camcogm.com_americanexpress.com&d=AAICaQ&c=zQ6tLaF7dShu6emFdFLQLQ&r=AfgFWq3_k20u3QSxhfE-TPsRXxWcDPc0YcZAhO55eV0&m=S_APJ9UeCnO7zAnBcvb2jKu_XvZJkrzyy0N$
    
    print re.sub("http-3A__", "http://", str), ("&d*.*"," ", str);   
    print re.sub("&d*.*"," ", str);
    

    请帮助!!!

3 个答案:

答案 0 :(得分:1)

关于您使用Apple URL的第一个示例,此代码有效:

#!/usr/bin/env python

import re

string = "hxxp-3A__developer.apple.com_contact_&d=AAMC-Q&c=zQ6tLaF7dShu6emFdFLQLQ&r=Omg3VPeUzekjh8aAoyWWiIblQyDVxual9qHMwJiqOpQ&m=MtC66x1fgSnrN9foA74EcYf6Ekmp0vmUDRLTGVtTQcU&s=xHGspXPb32hmzbF1rkJ2jWRvS011WqvwsU1LSM4zQdU&e="

string = string.replace('hxxps://',"u=")
string = string.replace('hxxp-3A__','http://')
string = string.replace('_','/')
string = re.sub(r'&d=[\s\S]*','',string)

print string

答案 1 :(得分:0)

您可以执行类似

的操作
>>> val=re.sub(r'hxxps.*u=hxxp-3A__([^&]+).*', r'hxxp://\1', str)
>>> re.sub(r'_', '/', val)
'hxxp://developer.apple.com/contact/'

答案 2 :(得分:0)

你可以使用替换这是语法:

string.replace(str ,old, new[, max])

所以对你而言

import string
str = "your text"
string.replace('str'hxxp-3A__','http://')
string.replace('str','_' , '/' )
sep = "&d="
str.split(sep, 1)[0]
str = str(0)