'str'객체는 Python에서 항목 할당을 지원하지 않습니다.


130

문자열에서 일부 문자를 읽고 다른 문자열에 넣고 싶습니다 (C 에서처럼).

그래서 내 코드는 다음과 같습니다.

import string
import re
str = "Hello World"
j = 0
srr = ""
for i in str:
    srr[j] = i #'str' object does not support item assignment 
    j = j + 1
print (srr)

C에서 코드는

i = j = 0; 
while(str[i] != '\0')
{
srr[j++] = str [i++];
}

파이썬에서 어떻게 구현할 수 있습니까?


19
Btw, 파이썬 내장 이후에 변수 이름을 지정하지 마십시오. 당신이 사용하는 경우 str여기에 변수로, 당신은 함께 문자열 변환을 할 수 없습니다 str(var_that_is_not_a_string)와 같은 또는 형식 comparisions type(var_with_unknown_type) == str.
Joel Cornett

답변:


100

Python에서 문자열은 변경할 수 없으므로 해당 문자를 제자리에서 변경할 수 없습니다.

그러나 다음을 수행 할 수 있습니다.

for i in str:
    srr += i

이것이 작동하는 이유는 다음을위한 지름길이기 때문입니다.

for i in str:
    srr = srr + i

위의 코드 는 각 반복마다 새 문자열만들고 해당 새 문자열 에 대한 참조를 srr.


그런 다음 문자열에서 문자를 읽고 어디에 복사하려면 어떻게해야합니까?
Rasmi Ranjan Nayak

1
@RasmiRanjanNayak : 해당 캐릭터로 무엇을해야하는지에 따라 다릅니다. 내 대답에서 나는 그들이 다른 문자열에 어떻게 추가 될 수 있는지 보여주었습니다.
NPE

"World Hello"에 "Hello world"프로그램을 작성하고 싶습니다. 따라서 내 코드는 공백 ( '')을 검색해야합니다. 그래서 도움을 찾고 있었다
Rasmi 란잔 나약

5
@RasmiRanjanNayak :print " ".join(reversed("Hello world".split())).capitalize()
Joel Cornett

2
@aix : 문자 그대로 서로 몇 초 이내에 이루어졌습니다. : D
Joel Cornett

113

다른 답변은 정확하지만 물론 다음과 같이 할 수 있습니다.

>>> str1 = "mystring"
>>> list1 = list(str1)
>>> list1[5] = 'u'
>>> str1 = ''.join(list1)
>>> print(str1)
mystrung
>>> type(str1)
<type 'str'>

정말로 원한다면.


14

파이썬 문자열 은 불변이므로 C에서하려는 작업은 파이썬에서는 불가능합니다. 새 문자열을 만들어야합니다.

문자열에서 일부 문자를 읽고 다른 문자열에 넣고 싶습니다.

그런 다음 문자열 조각을 사용합니다.

>>> s1 = 'Hello world!!'
>>> s2 = s1[6:12]
>>> print s2
world!

5

aix가 언급했듯이-Python의 문자열은 변경할 수 없습니다 (제자리에서 변경할 수 없음).

수행하려는 작업은 여러 가지 방법으로 수행 할 수 있습니다.

# Copy the string

foo = 'Hello'
bar = foo

# Create a new string by joining all characters of the old string

new_string = ''.join(c for c in oldstring)

# Slice and copy
new_string = oldstring[:]

1

특정 캐릭터를 다른 캐릭터로 교체하려는 경우 다른 방법 :

def swap(input_string):
   if len(input_string) == 0:
     return input_string
   if input_string[0] == "x":
     return "y" + swap(input_string[1:])
   else:
     return input_string[0] + swap(input_string[1:])

0

이 솔루션은 어떻습니까?

str = "Hello World"(문제에 명시된대로) srr = str + ""


-2

안녕 당신은 문자열 분할 방법을 시도해야합니다 :

i = "Hello world"
output = i.split()

j = 'is not enough'

print 'The', output[1], j
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.