문자열에서 문자 한 개 변경
Python에서 문자열의 문자를 대체하는 가장 쉬운 방법은 무엇인가?
예를 들면 다음과 같다.
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'
파이톤 문자열은 불변(즉, 수정할 수 없음)이다.이것에는 많은 이유가 있다.선택권이 없을 때까지 목록을 사용한 다음 문자열로 변경하십시오.
가장 빠른 방법?
세 가지 방법이 있다.스피드 서포터들에게 나는 '메소드 2'를 추천한다.
방법 1
이 대답에 의해 주어진다.
text = 'abcdefg'
new = list(text)
new[6] = 'W'
''.join(new)
'메소드 2'에 비하면 상당히 느린 것.
timeit.timeit("text = 'abcdefg'; s = list(text); s[6] = 'W'; ''.join(s)", number=1000000)
1.0411581993103027
방법 2(빠른 방법)
이 대답에 의해 주어진다.
text = 'abcdefg'
text = text[:1] + 'Z' + text[2:]
훨씬 빠른 속도:
timeit.timeit("text = 'abcdefg'; text = text[:1] + 'Z' + text[2:]", number=1000000)
0.34651994705200195
방법 3:
바이트 배열:
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:]
문자열을 반환하다text
위치 1에서 끝까지 위치는 0부터 계산되므로 '1'은 두 번째 문자다.
편집: 문자열의 모든 부분에 동일한 문자열 슬라이싱 기법을 사용할 수 있음
text = text[:1] + "Z" + text[2:]
또는 아래에 제시된 검색 및 교체 기술을 사용할 수 있는 경우에만 문자가 나타나는 경우
python 2.6 및 python 3부터 변이 가능한 bytearray를 사용할 수 있음(현과 달리 요소별로 변경할 수 있음):
s = "abcdefg"
b_s = bytearray(s)
b_s[1] = "Z"
s = str(b_s)
print s
aZcdefg
편집: str을 s로 변경
edit2: 논평에서 언급한 2비트 연금술사처럼, 이 코드는 유니코드와 함께 작동하지 않는다.
이 코드는 내 것이 아니다.어디서 찍은 사이트인지 기억이 안 나.흥미롭게도, 당신은 이것을 하나 또는 그 이상의 캐릭터가 하나 또는 그 이상의 샤렉터로 대체하는데 사용할 수 있다.비록 이 답장이 매우 늦었지만, 나 같은 초보자들은 그 답장이 유용하다고 느낄지도 모른다.
텍스트 기능 변경.
mytext = 'Hello Zorld'
mytext = mytext.replace('Z', 'W')
print mytext,
다른 사람들이 말했듯이, 일반적으로 파이톤 문자열은 불변의 것이어야 한다.
그러나 python.org에서 구현되는 CPython을 사용하는 경우 ctype을 사용하여 메모리의 문자열 구조를 수정할 수 있다.
여기 내가 그 기술을 사용하여 줄을 지우는 예가 있다.
나는 완전성을 위해 이것을 언급했고, 이것이 당신의 마지막 수단이 되어야 한다. 그것은 진부한 것이기 때문이다.
Python에서는 문자열이 불변하므로 기존 문자열을 변경할 수 없다.하지만 만약 당신이 그 안에 있는 어떤 문자열을 바꾸고 싶다면, 당신은 다음과 같이 새로운 문자열을 만들 수 있다.
def replace(s, position, character):
return s[:position] + character + s[position+1:]
1, '교교('King', 1, 'o')
콩// 결과: 콩
참고: 위치 값을 문자열 길이보다 크게 지정하면 문자열이 끝에 추가된다.
('Dog ''교('Dog', 10, 's')
/ 결과: 개
난 f-string을 좋아해.
text = f'{text[:1]}Z{text[2:]}'
내 기계에서 이 방법은 문자열을 연결하기 위해 +를 사용하는 "빠른 방법"보다 10% 더 빠르다.
>>> timeit.timeit("text = 'abcdefg'; text = text[:1] + 'Z' + text[2:]", number=1000000)
1.1691178000000093
>>> timeit.timeit("text = 'abcdefg'; text = f'{text[:1]}Z{text[2:]}'", number =1000000)
0.9047831999999971
>>>
사실, 끈을 가지고 이런 일을 할 수 있다.
oldStr = 'Hello World!'
newStr = ''
for i in oldStr:
if 'a' < i < 'z':
newStr += chr(ord(i)-32)
else:
newStr += i
print(newStr)
'HELLO WORLD!'
기본적으로 나는 새로운 문자열 :)에 함께 "추가"+"줄"을 붙이고 있다.
당신의 세계가 100%라면.ascii/utf-8
(해당 박스에 적합한 많은 사용 사례):
b = bytearray(s, 'utf-8')
# process - e.g., lowercasing:
# b[0] = b[i+1] - 32
s = str(b, 'utf-8')
비단뱀 3.7.3
문자열에서 문자를 변경하는 다른 방법을 추가하고 싶다.
>>> text = '~~~~~~~~~~~'
>>> text = text[:1] + (text[1:].replace(text[0], '+', 1))
'~+~~~~~~~~~'
문자열을 목록으로 변경하고 ith 값을 바꾼 후 다시 가입하는 것과 비교하면 얼마나 빠른가?
리스트 어프로치
>>> timeit.timeit("text = '~~~~~~~~~~~'; s = list(text); s[1] = '+'; ''.join(s)", number=1000000)
0.8268570480013295
마이솔루션
>>> timeit.timeit("text = '~~~~~~~~~~~'; text=text[:1] + (text[1:].replace(text[0], '+', 1))", number=1000000)
0.588400217000526
다음과 같은 문구를 사용할 수 있는 경우 찾기 및 대체 방법을 단일 행으로 결합한 솔루션:
```python
my_var = "stackoverflaw"
my_new_var = my_var.replace('a', 'o', 1) if my_var.find('s') != -1 else my_var
print(f"my_var = {my_var}") # my_var = stackoverflaw
print(f"my_new_var = {my_new_var}") # my_new_var = stackoverflow
```
문자열에서 문자를 바꾸려면 다음과 같이 하십시오.
다음 방법 중 하나를 사용하십시오.
방법 1
대체적으로.
string = f'{string[:index]}{replacing_character}{string[index+1:]}'
여기
text = f'{text[:1]}Z{text[2:]}'
방법 2
대체적으로.
string = string[:index] + replacing_character + string[index+1:]
여기
text = text[:1] + 'Z' + text[2:]
다음을 시도해 보십시오.
old_string = "mba"
string_list = list(old_string)
string_list[2] = "e"
//Replace 3rd element
new_string = "".join(string_list)
print(new_string)
참조URL: https://stackoverflow.com/questions/1228299/changing-one-character-in-a-string
'IT이야기' 카테고리의 다른 글
API 호출에서 데이터를 수신한 후(후크 사용) 반응이 UI를 업데이트하지 않음 (0) | 2022.03.10 |
---|---|
관찰자를 Redex-sagas로 전달 (0) | 2022.03.10 |
Vuetify 데이터 테이블 날짜 열을 포맷하는 방법? (0) | 2022.03.10 |
Python의 dritt.keys()는 왜 집합이 아닌 목록을 반환하는가? (0) | 2022.03.10 |
Vue Js - v-for X time(범위 내)을 통한 루프 (0) | 2022.03.10 |