2012-05-17 10 views
58

Ich möchte einige Zeichen aus einer Zeichenfolge lesen und in andere Zeichenfolge (wie wir in C tun).'str' Objekt unterstützt keine Item-Zuweisung in Python

So ist mein Code wie unten

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) 

In C der Code

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

Wie kann ich das gleiche in Python implementieren?

+8

Btw, nicht Ihre Variablen nach Python builtins nennen. Wenn Sie hier 'str' als Variable verwenden, können Sie keine Zeichenfolgenkonvertierungen mit' str (var_that_is_not_a_string) vornehmen oder Vergleiche wie 'type (var_with_unknown_type) == str' eingeben. –

Antwort

47

In Python sind Zeichenfolgen unveränderlich, daher können Sie ihre Zeichen nicht direkt ändern.

Sie können jedoch wie folgt vorgehen:

for i in str: 
    srr += i 

Die Gründe dies funktioniert, ist, dass es für eine Abkürzung ist:

for i in str: 
    srr = srr + i 

Die obige erstellt eine neue Zeichenfolge mit jeder Iteration und speichert den Verweis auf diese neue Zeichenfolge in srr.

+0

Wenn ich dann die Zeichen aus der Zeichenfolge lesen und sie wo kopieren würde, wie kann ich das dann tun? –

+1

@RasmiRanjanNayak: Es hängt davon ab, was Sie mit diesen Charakteren tun müssen. In meiner Antwort habe ich gezeigt, wie sie an eine andere Zeichenfolge angehängt werden können. – NPE

+0

Ich möchte ein Programm "Hallo Welt" zu "Welt Hallo" schreiben.Also sollte mein Code nach Leerzeichen suchen (''). Also ich suchte nach Hilfe –

8

Python strings sind unveränderlich, also was Sie in C versuchen werden, wird in Python einfach unmöglich sein. Sie müssen eine neue Zeichenfolge erstellen.

Ich möchte einige Zeichen aus einer Zeichenfolge lesen und in andere Zeichenfolge einfügen.

Dann einen String Scheibe verwenden:

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

Wie aix erwähnt - Strings in Python sind unveränderlich (Sie sie nicht Inplace ändern können).

# 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

Wie über diese Lösung:

str = "Hallo Welt" (wie angegeben in Problem) srr = str + "

Was Sie versuchen können zu tun, in vielerlei Hinsicht getan werden "

54

Die anderen Antworten sind richtig, aber Sie können, natürlich, so etwas wie:

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

wenn Sie wirklich wollen.

-3

Hallo sollten Sie die Zeichenfolge Split-Methode versuchen:

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

j = 'is not enough' 

print 'The', output[1], j 
Verwandte Themen