파이썬에서 문자열의 문자를 대체하는 가장 쉬운 방법은 무엇인가요?
예를 들어
text = "abcdefg"; text[1] = "Z"; ^
문자열을 수정하지 마세요.
목록으로 작업하고 필요할 때만 문자열로 바꾸세요.
>>> s = list("Hello zorld") >>> s ['H', 'e', 'l', 'l', 'o', ' ', 'z', 'o', 'r', 'l', 'd'] >>> s[6] = 'W' >>> s ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'] >>> "".join(s) 'Hello World'
파이썬 문자열은 변경할 수 없습니다(즉, 수정할 수 없습니다). 여기에는 많은 이유가 있습니다. 선택의 여지가 없을 때까지 목록을 사용한 다음 문자열로 전환하세요.
세 가지 방법으로. # 39, & # 39 의 속도를 내가 2& 메서드로부터 추천합니까 보였다.
답변 이 주어진다.
text = 'abcdefg' new = list(text) new[6] = 'W' ''.join(new)
timeit.timeit("text = 'abcdefg'; s = list(text); s[6] = 'W'; ''.join(s)", number=1000000) 1.0411581993103027
text = 'abcdefg' text = text[:1] + 'Z' + text[2:]
이는 훨씬 빠릅니다.
timeit.timeit("text = 'abcdefg'; text = text[:1] + 'Z' + text[2:]", number=1000000) 0.34651994705200195
바이트입니다 어레이입니다:
timeit.timeit("text = 'abcdefg'; s = bytearray(text); s[1] = 'Z'; str(s)", number=1000000) 1.0387420654296875
new = text[:1] + 'Z' + text[2:]
파이썬 문자열은 불변이므로 복사본을 만들어 변경할 수 있습니다. 원하는 작업을 수행하는 가장 쉬운 방법일 것입니다.
text = "Z" + text[1:]
text[1:]는 위치 1부터 끝까지의 문자열을 텍스트로 반환하며, 위치는 0부터 계산하므로 '1'은 두 번째 문자입니다.
편집: 문자열의 모든 부분에 동일한 문자열 조각화 기법을 사용할 수 있습니다.
text = text[:1] + "Z" + text[2:]
또는 문자가 한 번만 나타나는 경우 아래에 제안 된 검색 및 바꾸기 기술을 사용할 수 있습니다. 아래
파이썬 2.6 및 파이썬 시작으로 3 bytearray 변경 가능 (달리 문장열 요소점 와이즈 변경할 수 있습니다) 가 사용할 수 있습니다.
s = "abcdefg" b_s = bytearray(s) b_s[1] = "Z" s = str(b_s) print s aZcdefg
편집: S 변경일 str
edit2: 유니코드 코드 주석이 언급한 것처럼 이 두 연금술사 와 함께 사용할 수 없습니다.
다른 사람들이 일반적으로 파이썬 문장열 불변 수 있어야 하고, 같은 것 "이라고 말했다.
그러나 스피통 사용하는 경우, 구현 dell. (python.org) 를 메모리 구조에 구체화하십시오 수정하십시오 ctypes 사용할 수 있습니다.
내가 기법을 사용할 수 있는 예를 들어보겠습니다 선택해제합니다 구체화하십시오.
내가 이 생각해서라도 언급하십시오 완성도, 그리고 최후의 하키스 그대로 너회의 되어야 합니다.
이 코드는 내거냐 없습니다. # 39, t, 내가 couldn& 재호출 사이트 양식이 미하엘한테서. 흥미로운 점은 이 한 개 이상의 카르스터스 교체할 수 있는 한 글자 이상 사용할 수 있습니다. 비록 이 회신과 (anytime) 이 매우 늦은 초보자, 나 같은 유용한 알 수 있습니다.
mytext = 'Hello Zorld' mytext = mytext.replace('Z', 'W') print mytext,
이 같은 일이 실제로 문장열 함께 할 수 있습니다.
oldStr = 'Hello World!' newStr = '' for i in oldStr: if 'a' < i < 'z': newStr += chr(ord(i)-32) else: newStr += i print(newStr) 'HELLO WORLD!'
ascii/utf-8 경우 100 퍼센트 는 '세계' (많이유 사례를 충족합니다 그 기입란):
b = bytearray(s, 'utf-8') # process - e.g., lowercasing: # b[0] = b[i+1] - 32 s = str(b, 'utf-8')
파이썬 3.7.3
문자열을 수정하지 마세요.
목록으로 작업하고 필요할 때만 문자열로 바꾸세요.
파이썬 문자열은 변경할 수 없습니다(즉, 수정할 수 없습니다). 여기에는 많은 이유가 있습니다. 선택의 여지가 없을 때까지 목록을 사용한 다음 문자열로 전환하세요.
가장 빠른 방법?
세 가지 방법으로. # 39, & # 39 의 속도를 내가 2& 메서드로부터 추천합니까 보였다.
답변 이 주어진다.
39, & # 39 에 비해 매우 느린 2& 하는 방법.
답변 이 주어진다.
이는 훨씬 빠릅니다.
바이트입니다 어레이입니다:
파이썬 문자열은 불변이므로 복사본을 만들어 변경할 수 있습니다.
원하는 작업을 수행하는 가장 쉬운 방법일 것입니다.
text[1:]는 위치 1부터 끝까지의 문자열을 텍스트로 반환하며, 위치는 0부터 계산하므로 '1'은 두 번째 문자입니다.
편집: 문자열의 모든 부분에 동일한 문자열 조각화 기법을 사용할 수 있습니다.
또는 문자가 한 번만 나타나는 경우 아래에 제안 된 검색 및 바꾸기 기술을 사용할 수 있습니다. 아래
파이썬 2.6 및 파이썬 시작으로 3 bytearray 변경 가능 (달리 문장열 요소점 와이즈 변경할 수 있습니다) 가 사용할 수 있습니다.
편집: S 변경일 str
edit2: 유니코드 코드 주석이 언급한 것처럼 이 두 연금술사 와 함께 사용할 수 없습니다.
다른 사람들이 일반적으로 파이썬 문장열 불변 수 있어야 하고, 같은 것 "이라고 말했다.
그러나 스피통 사용하는 경우, 구현 dell. (python.org) 를 메모리 구조에 구체화하십시오 수정하십시오 ctypes 사용할 수 있습니다.
내가 기법을 사용할 수 있는 예를 들어보겠습니다 선택해제합니다 구체화하십시오.
983525 https://stackoverflow.com/questions/982682/mark-data-as-sensitive-in-python/983525
내가 이 생각해서라도 언급하십시오 완성도, 그리고 최후의 하키스 그대로 너회의 되어야 합니다.
이 코드는 내거냐 없습니다. # 39, t, 내가 couldn& 재호출 사이트 양식이 미하엘한테서. 흥미로운 점은 이 한 개 이상의 카르스터스 교체할 수 있는 한 글자 이상 사용할 수 있습니다. 비록 이 회신과 (anytime) 이 매우 늦은 초보자, 나 같은 유용한 알 수 있습니다.
텍스트 변경 기능.
이 같은 일이 실제로 문장열 함께 할 수 있습니다.
39 m,,, 기본적으로 I& " adding" +" strings". 새로운 기술을 구체화하십시오:).
ascii/utf-8 경우 100 퍼센트 는 '세계' (많이유 사례를 충족합니다 그 기입란):
파이썬 3.7.3