Dieser einfache Code, der einfach versucht, Semikolons (an von i angegebenen Positionen) durch Doppelpunkte zu ersetzen, funktioniert nicht:
for i in range(0,len(line)):
if (line[i]==";" and i in rightindexarray):
line[i]=":"
Es gibt den Fehler
line[i]=":"
TypeError: 'str' object does not support item assignment
Wie kann ich das umgehen, um die Semikolons durch Doppelpunkte zu ersetzen? Die Verwendung von replace funktioniert nicht, da für diese Funktion kein Index erforderlich ist. Möglicherweise gibt es Semikolons, die ich nicht ersetzen möchte.
Beispiel
In der Zeichenfolge kann ich eine beliebige Anzahl von Semikolons haben, zB "Hei der!; Hallo dort;!;"
Ich weiß, welche ich ersetzen möchte (ich habe ihren Index in der Zeichenfolge). Die Verwendung von replace funktioniert nicht, da ich damit keinen Index verwenden kann.
Zeichenfolgen in Python sind unveränderlich. Sie können sie also nicht als Liste behandeln und Indizes zuweisen.
Verwenden Sie stattdessen .replace()
:
line = line.replace(';', ':')
Wenn Sie nur bestimmte Semikolons ersetzen müssen, müssen Sie spezifischer sein. Sie können slicing verwenden, um den zu ersetzenden Abschnitt der Zeichenfolge zu isolieren:
line = line[:10].replace(';', ':') + line[10:]
Dadurch werden alle Semikolons in den ersten 10 Zeichen der Zeichenfolge ersetzt.
Sie können Folgendes tun, um ein beliebiges Zeichen durch ein entsprechendes Zeichen an einem bestimmten Index zu ersetzen, wenn Sie .replace()
nicht verwenden möchten.
Word = 'python'
index = 4
char = 'i'
Word = Word[:index] + char + Word[index + 1:]
print Word
o/p: pythin
Verwandle den String in eine Liste; dann können Sie die Zeichen einzeln ändern. Dann können Sie es mit .join
wieder zusammensetzen:
s = 'a;b;c;d'
slist = list(s)
for i, c in enumerate(slist):
if slist[i] == ';' and 0 <= i <= 3: # only replaces semicolons in the first part of the text
slist[i] = ':'
s = ''.join(slist)
print s # prints a:b:c;d
Wenn Sie ein einzelnes Semikolon ersetzen möchten:
for i in range(0,len(line)):
if (line[i]==";"):
line = line[:i] + ":" + line[i+1:]
Havent hat es trotzdem getestet.
Dies sollte einen etwas allgemeineren Fall abdecken, aber Sie sollten in der Lage sein, ihn für Ihre Zwecke anzupassen
def selectiveReplace(myStr):
answer = []
for index,char in enumerate(myStr):
if char == ';':
if index%2 == 1: # replace ';' in even indices with ":"
answer.append(":")
else:
answer.append("!") # replace ';' in odd indices with "!"
else:
answer.append(char)
return ''.join(answer)
Hoffe das hilft
Sie können einem Zeichen in der Zeichenfolge nicht einfach einen Wert zuweisen. Verwenden Sie diese Methode, um den Wert eines bestimmten Zeichens zu ersetzen:
name = "India"
result=name .replace("d",'*')
Ausgabe: In * ia
Wenn Sie sagen möchten, sagen Sie * für alle Vorkommen des ersten Zeichens mit Ausnahme des ersten Zeichens string = babble Ausgabe = ba ** le
Code:
name = "babble"
front= name [0:1]
fromSecondCharacter = name [1:]
back=fromSecondCharacter.replace(front,'*')
return front+back
Wenn Sie durch einen in der Variablen 'n' angegebenen Indexwert ersetzen, versuchen Sie Folgendes:
def missing_char(str, n):
str=str.replace(str[n],":")
return str
Ich habe diese Methode geschrieben, um Zeichen oder Zeichenfolgen in einer bestimmten Instanz zu ersetzen. Instanzen beginnen bei 0 (dies kann leicht auf 1 geändert werden, wenn Sie das optionale Argument inst in 1 und die Variable test_instance in 1 ändern.
def replace_instance(some_Word, str_to_replace, new_str='', inst=0):
return_Word = ''
char_index, test_instance = 0, 0
while char_index < len(some_Word):
test_str = some_Word[char_index: char_index + len(str_to_replace)]
if test_str == str_to_replace:
if test_instance == inst:
return_Word = some_Word[:char_index] + new_str + some_Word[char_index + len(str_to_replace):]
break
else:
test_instance += 1
char_index += 1
return return_Word
Um ein Zeichen an einem bestimmten Index zu ersetzen, lautet die Funktion wie folgt:
def replace_char(s , n , c):
n-=1
s = s[0:n] + s[n:n+1].replace(s[n] , c) + s[n+1:]
return s
dabei ist s ein String, n ist Index und c ist ein Zeichen.
Wie wäre es damit:
sentence = 'After 1500 years of that thinking surpressed'
sentence = sentence.lower()
def removeLetter(text,char):
result = ''
for c in text:
if c != char:
result += c
return text.replace(char,'*')
text = removeLetter(sentence,'a')