문자열의 각 문자를 알파벳으로 옮겨서 다른 것으로 옮기고 싶습니다. 아래 예제에서 2 씩 이동합니다. 따라서 a -> c, b -> d 등파이썬에서 시프트 암호 : ord를 사용하는 오류
이 작업을 수행하기 위해 정규 표현식과 sub
함수를 사용하려고하는데, 오류. 변수 text
는 입력 문자열입니다
p = re.compile(r'(\w)')
test = p.sub(chr(ord('\\1') + 2), text)
print test
을 :
이
는 내가 가지고있는 코드입니다.그리고이 오류 받고 있어요 :
TypeError: ord() expected a character, but string of length 2 found
을 나는 문제가 나는 ord
기능은 리터럴 문자열 "\ 1"과에 호출되는 것을 생각하지 정규으로 일치 \w
문자에 표현. 이 작업을 수행하는 올바른 방법은 무엇입니까?
당신은 정규 표현식을 사용하는 이유가 없다; 정규 표현식은 하위 문자열 (특수 구조가있는 경우가 많음)을 검색하기위한 것이지만 이미 정규 표현식없이 한 문자 씩 하위 문자열을 추출 할 수 있습니다. 단지'[c for string in c] '입니다. 어쨌든 (regexes를 사용하지 않는) 솔루션을 제공했습니다. – ninjagecko
정규 표현식에 들어간 이유는 "단어"문자 만 바꾸기를 원했기 때문이며, 이해하는 방법을 모르겠습니다. (난 단지 파이썬 배우고, 당신이 말할 수없는 경우) – Joe
문자열에 공백과 구두점이 포함될 수 있습니다. 이러한 문자는 이동하지 않아야하지만 숫자 나 문자는 이동해야합니다. 애매한 점 죄송합니다. 원래 질문에 대한 여러 가지 좋은 대답이있었습니다. 내가 할 수 있으면 upvote 줄. – Joe