Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:用字典替换命名组_Python_Regex_Replace_Python 2.7 - Fatal编程技术网

Python:用字典替换命名组

Python:用字典替换命名组,python,regex,replace,python-2.7,Python,Regex,Replace,Python 2.7,如何将\s+替换为单个span,全部至,,所有a.m至AM,所有x至y 我不熟悉命名组替换,如何使用单个正则表达式和单个sub()调用将字符集替换为替换字符集 如果我能将所有替换字符串保存在一个dict中,并拥有一个RegEx字符串,那么这可能是一种明智的方法 Eg: M-Th 5:30 am-10 pm; F 5:30 a.m-10:30 p.m, Sa 10:30-10:30, Su 10:30-10 x y z x Output: M-Th 5:30 AM-10 PM, F 5

如何将
\s+
替换为单个span,全部
,所有
a.m
AM
,所有
x
y
我不熟悉命名组替换,如何使用单个正则表达式和单个sub()调用将字符集替换为替换字符集

如果我能将所有替换字符串保存在一个dict中,并拥有一个RegEx字符串,那么这可能是一种明智的方法

Eg: M-Th    5:30 am-10 pm; F    5:30 a.m-10:30 p.m, Sa 10:30-10:30, Su 10:30-10 x y z x
Output: M-Th 5:30 AM-10 PM, F 5:30 AM - 10:30 PM, Sa 10:30 - 10:30, Su 10:30-10 y y z y
考虑:-

import re
def sub(matchobj):
    if matchobj.group(0) == ';':
        return ':'
    elif matchobj.group(0) == 'a.m.':
        return 'AM'
    elif re.match('\\s+$', matchobj.group(0)):
        return ' '

print re.sub(';|\\s+|a.m.', sub, '10; a.m.          ;')
样本运行:-

C:\>python st.py
10:AM
或者(借用阿马尔的话,我喜欢他的解决方案简洁明了:):-

这同样有效:-

C:\>python st.py
M-Th 5:30 am-10 pm, F 5:30 AM-10:30 p.m, Sa 10:30-10:30, Su 10:30-10 y y
试试这个

 mydict = {"\s+":" ", ";":",", "a.m":"AM","x":"y"}
 mystr = "M-Th    5:30 am-10 pm; F    5:30 a.m-10:30 p.m, Sa 10:30-10:30, Su 10:30-10 x y z x"

 for k, v in mydict.iteritems():
    mystr = mystr.replace(k, v)

 print mystr
输出

M-Th    5:30 am-10 pm, F    5:30 AM-10:30 p.m, Sa 10:30-10:30, Su 10:30-10 y y z y
我想在python中这样做
M-Th    5:30 am-10 pm, F    5:30 AM-10:30 p.m, Sa 10:30-10:30, Su 10:30-10 y y z y