Хотите проанализировать текст и вернуть только буквы, цифры, прямую и обратную косую черту и заменить все остальное на ''
.
Можно ли использовать только один шаблон регулярного выражения, а не несколько, которые затем вызывают цикл? Я не могу получить приведенный ниже шаблон, чтобы не заменить обратную и прямую косую черту.
line1 = "1/R~e`p!l@@a#c$e%% ^A&l*l( S)-p_e+c=ial C{har}act[er]s ;E xce|pt Forw:ard\" $An>d B,?a..ck Sl'as<he#s\\2"
line2 = line
RGX_PATTERN = "[^\w]", "_"
for pattern in RGX_PATTERN:
line = re.sub(r"%s" %pattern, '', line)
print("replace1: " + line)
#Prints: 1ReplaceAllSpecialCharactersExceptForwardAndBackSlashes2
приведенный ниже код из SO был протестирован и оказался быстрее, чем регулярное выражение, но затем он заменяет все специальные символы, включая / и \ что я хочу сохранить. Есть ли способ отредактировать его, чтобы он работал для моего варианта использования и при этом сохранял преимущество над регулярным выражением?
line2 = ''.join(e for e in line2 if e.isalnum())
print("replace2: " + line2)
#Prints: 1ReplaceAllSpecialCharactersExceptForwardAndBackSlashes2
В качестве дополнительного препятствия синтаксический анализ текста должен быть в форме ASCII, поэтому, если возможно, символы из любой другой кодировки также следует заменить на ''