如果我运行此代码:
import re
mapping = {'gde1': 'a', '4&TW': 'b', 'E#ZB': 'c', 'B0F&': 'd', 'uvRD': 'e', 'M7vr': 'f', 'X$*d': 'g', 'XQ%R': 'h', 'jma+': 'i', 'P9We': 'j', 'xw4O': 'k', 'zT@3': 'l', '4B30': 'm', 'Jc&$': 'n', 'Szb7': 'o', '+yvf': 'p', 'tGgQ': 'q', '$g0Y': 'r', '9y6h': 's', '%Mo&': 't', '*fyQ': 'u', 'jaDZ': 'v', '%FaT': 'w', 'FBn5': 'x', 'sX2s': 'y', 'bFwN': 'z', 'qV0c': 'A', 'Zwg0': 'B', 'v!6!': 'C', 'wKKw': 'D', 'v3xd': 'E', 'oy@u': 'F', 'bu+S': 'G', '4Sh2': 'H', '6drQ': 'I', 'oQ#w': 'J', '555k': 'K', 'G$d3': 'L', 'AuJ3': 'M', 'XGm+': 'N', 'aqs3': 'O', '9Tvb': 'P', 'H%42': 'Q', 'g8E+': 'R', 'kwgO': 'S', '86+y': 'T', 'bv5e': 'U', 'Hg4b': 'V', '=dsc': 'W', 'B6jk': 'X', '@Av9': 'Y', 'kwPS': 'Z', 'Y1q$': '1', 'bNny': '2', 'mu!R': '3', 'HHRK': '4', 'm$!V': '5', '71D$': '6', 'm6qA': '7', 'o@U4': '8', '#ze1': '9', 'aAM6': '0', 'u7$q': '~', 'jwzQ': ':', 'yw#S': "'", '65BO': '+', 'xAhB': '[', 'X=G+': '\\', 'EXa7': '@', 'WpX6': '^', 'C#c2': '{', 'C8!y': '%', 'rCEB': '(', 'Ebos': '-', 'VKb!': '"', 'WPOu': '*', '9Ht$': '|', 'ZHo=': ',', 'ZkKY': '&', 'artq': '<', 'nS9m': '`', 'k!vX': '}', 'j1f6': '.', 'VpV%': '_', '5u*$': '=', '8rjs': ']', 'JJc!': '!', 'SW%$': '>', '#g@G': ';', '#xF&': '?', '$E60': '#', 'U7Su': '$', 'g8FA': ')', '4o4s': '/'}
string = 'gde1'
choices = f'({"|".join(mapping)})'
result = ''.join(mapping.get(s, s) for s in re.split(choices, string))
print(result)
该代码应该输出“a”。
但它给了我一个错误信息:
Traceback (most recent call last):
File "c:\EDS\fatstrst.py", line 5, in <module>
result = ''.join(mapping.get(s, s) for s in re.split(choices, string))
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\re.py", line 231, in split
return _compile(pattern, flags).split(string, maxsplit)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\re.py", line 304, in _compile
p = sre_compile.compile(pattern, flags)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\sre_compile.py", line 764, in compile
p = sre_parse.parse(p, flags)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\sre_parse.py", line 950, in parse
p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\sre_parse.py", line 443, in _parse_sub
itemsappend(_parse(source, state, verbose, nested + 1,
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\sre_parse.py", line 836, in _parse
p = _parse_sub(source, state, sub_verbose, nested + 1)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\sre_parse.py", line 443, in _parse_sub
itemsappend(_parse(source, state, verbose, nested + 1,
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3312.0_x64__qbz5n2kfra8p0\lib\sre_parse.py", line 668, in _parse
raise source.error("nothing to repeat",
re.error: nothing to repeat at position 33
但当我缩短
mapping =
致:
mapping = {'gde1': 'a', '4&TW': 'b', 'E#ZB': 'c', 'B0F&': 'd'}
它工作正常,输出稳定
a
.
有人知道怎么做吗?任何帮助都将不胜感激。