2017-12-27 1 views
0

기호가 목록에없는 문자 나 기호로 구분 된 경우에만 특수 기호 /#$%^&*@을 제거하는 문자열을 정리해야합니다. 예 :기호를 제거하여 문자열 청소

H8e%&l6&%[email protected] [email protected]/9^65$n228d w%e60$$#&[email protected]/c6o5m3e --> Hello and welcome 
I1^/0^^@9t #$%% i/@4#s 11P17/9$M 5^&* a^$45$5$0n&##^4d 6^&&* I $%^$%^ [email protected]@94%3*m t3120i36&^1r2&^##0e&^d ---> It #$%% is 11PM 5^&* and 6^&&* I $%^$%^ am tired 
,. a3%2%1/3$s*0. d8^! -->,. as. d! 
##%12Symbols on the left must remain untouched --> ##%12Symbols on the left must remain untouched 

가 나는 re.sub을 사용하여 할 수 있다고 파악 :

import re 
def _correct_message(message): 
    new_final_string = re.sub("(?<=[a-zA-Z\.\!])[/#\$\%\^\&\*\@]+(?=[a-zA-Z\.\!])", '', message) 
    return new_final_string 

을하지만 목록 .!.? 수동으로하지 않은 내가 기호를 추가해야한다는 사실을 좋아하지 않는다 . regex없이 만들 수 있습니까?

+2

당신은 문자열을 반복 할 수 공간이 모든 일치를 대체 각 문자를 확인하고 그렇지 않으면 제거하십시오. – Nicolas

+1

그냥 정규식을 돕기 위해 : 다음 웹 사이트를보십시오 : https://regex101.com 그것은 정규 표현식을 번역합니다. –

답변

0

그것은 가장 가까운 내가 얻을 수있는 다음 하나가 너무하고 특별 한 경우

(\W+|\d{1,}(?!\d\[A-Za-z]))(?![A-Za-z]{2,}) 

그냥,

관련 문제