J'aimerais lire quelques caractères d'une chaîne et les insérer dans une autre chaîne (comme nous le faisons en C).
Donc, mon code est comme ci-dessous
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)
En C le code peut être
i = j = 0;
while(str[i] != '\0')
{
srr[j++] = str [i++];
}
Comment puis-je implémenter la même chose en Python?
En Python, les chaînes sont immuables, vous ne pouvez donc pas changer leurs caractères sur place.
Vous pouvez cependant procéder comme suit:
for i in str:
srr += i
Cela fonctionne parce qu’il s’agit d’un raccourci pour:
for i in str:
srr = srr + i
Le ci-dessus crée une nouvelle chaîne à chaque itération et stocke la référence à cette nouvelle chaîne dans srr
.
Les autres réponses sont correctes, mais vous pouvez bien sûr faire quelque chose comme:
>>> str1 = "mystring"
>>> list1 = list(str1)
>>> list1[5] = 'u'
>>> str1 = ''.join(list1)
>>> print(str1)
mystrung
>>> type(str1)
<type 'str'>
si tu le veux vraiment.
Les chaînes Python sont immuables, ce que vous essayez de faire en C sera tout simplement impossible en python. Vous devrez créer une nouvelle chaîne.
Je voudrais lire quelques caractères d'une chaîne et le mettre dans autre chaîne.
Ensuite, utilisez une tranche de chaîne:
>>> s1 = 'Hello world!!'
>>> s2 = s1[6:12]
>>> print s2
world!
Comme l'aix l'a mentionné, les chaînes en Python sont immuables (vous ne pouvez pas les changer sur place).
Ce que vous essayez de faire peut être fait de plusieurs manières:
# 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[:]
Une autre approche si vous voulez échanger un personnage spécifique contre un autre personnage:
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:])