Gibt es in Python eine Funktion, mit der ich einen Wert an einer bestimmten Position eines Strings einfügen kann?
Etwas wie das:
"3655879ACB6"
dann in Position 4 hinzufügen "-"
, um zu werden"3655-879ACB6"
Gibt es in Python eine Funktion, mit der ich einen Wert an einer bestimmten Position eines Strings einfügen kann?
Etwas wie das:
"3655879ACB6"
dann in Position 4 hinzufügen "-"
, um zu werden"3655-879ACB6"
Antworten:
Python-Strings sind unveränderlich.
>>> s='355879ACB6'
>>> s[4:4] = '-'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
Es ist jedoch möglich, eine neue Zeichenfolge mit dem eingefügten Zeichen zu erstellen:
>>> s[:4] + '-' + s[4:]
'3558-79ACB6'
Das scheint sehr einfach zu sein:
>>> hash = "355879ACB6"
>>> hash = hash[:4] + '-' + hash[4:]
>>> print hash
3558-79ACB6
Wenn Sie jedoch so etwas wie eine Funktion mögen, gehen Sie wie folgt vor:
def insert_dash(string, index):
return string[:index] + '-' + string[index:]
print insert_dash("355879ACB6", 5)
Da Zeichenfolgen unveränderlich sind, besteht eine andere Möglichkeit darin, die Zeichenfolge in eine Liste umzuwandeln, die dann indiziert und geändert werden kann, ohne dass Tricks auftreten müssen. Um die Liste jedoch wieder auf eine Zeichenfolge zu bringen, müssen Sie .join()
eine leere Zeichenfolge verwenden.
>>> hash = '355879ACB6'
>>> hashlist = list(hash)
>>> hashlist.insert(4, '-')
>>> ''.join(hashlist)
'3558-79ACB6'
Ich bin mir nicht sicher, wie sich dies in Bezug auf die Leistung verhält, aber ich habe das Gefühl, dass es für die Augen einfacher ist als für die anderen Lösungen. ;-);
Ich habe eine sehr nützliche Methode entwickelt, um einen String an einer bestimmten Position in Python hinzuzufügen :
def insertChar(mystring, position, chartoinsert ):
longi = len(mystring)
mystring = mystring[:position] + chartoinsert + mystring[position:]
return mystring
beispielsweise:
a = "Jorgesys was here!"
def insertChar(mystring, position, chartoinsert ):
longi = len(mystring)
mystring = mystring[:position] + chartoinsert + mystring[position:]
return mystring
#Inserting some characters with a defined position:
print(insertChar(a,0, '-'))
print(insertChar(a,9, '@'))
print(insertChar(a,14, '%'))
wir werden als Ausgabe haben:
-Jorgesys was here!
Jorgesys @was here!
Jorgesys was h%ere!
Ich denke, die obigen Antworten sind in Ordnung, aber ich würde erklären, dass sie einige unerwartete, aber gute Nebenwirkungen haben ...
def insert(string_s, insert_s, pos_i=0):
return string_s[:pos_i] + insert_s + string_s[pos_i:]
Wenn der Index pos_i sehr klein (zu negativ) ist, wird der Einfügezeichenfolge vorangestellt. Wenn zu lang, wird die Einfügezeichenfolge angehängt. Wenn pos_i zwischen -len (string_s) und + len (string_s) - 1 liegt, wird der Insert-String an der richtigen Stelle eingefügt.
Wenn Sie viele Einsätze wünschen
from rope.base.codeanalyze import ChangeCollector
c = ChangeCollector(code)
c.add_change(5, 5, '<span style="background-color:#339999;">')
c.add_change(10, 10, '</span>')
rend_code = c.get_changed()
s[:-4]