Có bất kỳ hàm nào trong Python mà tôi có thể sử dụng để chèn một giá trị vào một vị trí nhất định của chuỗi không?
Một cái gì đó như thế này:
"3655879ACB6"
sau đó ở vị trí 4 thêm "-"
để trở thành"3655-879ACB6"
Có bất kỳ hàm nào trong Python mà tôi có thể sử dụng để chèn một giá trị vào một vị trí nhất định của chuỗi không?
Một cái gì đó như thế này:
"3655879ACB6"
sau đó ở vị trí 4 thêm "-"
để trở thành"3655-879ACB6"
Câu trả lời:
Số Python Chuỗi là bất biến.
>>> s='355879ACB6'
>>> s[4:4] = '-'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
Tuy nhiên, có thể tạo một chuỗi mới có ký tự được chèn:
>>> s[:4] + '-' + s[4:]
'3558-79ACB6'
Điều này có vẻ rất dễ dàng:
>>> hash = "355879ACB6"
>>> hash = hash[:4] + '-' + hash[4:]
>>> print hash
3558-79ACB6
Tuy nhiên nếu bạn thích một cái gì đó giống như một chức năng, hãy làm như sau:
def insert_dash(string, index):
return string[:index] + '-' + string[index:]
print insert_dash("355879ACB6", 5)
Vì các chuỗi là bất biến nên một cách khác để làm điều này là biến chuỗi thành một danh sách, sau đó có thể được lập chỉ mục và sửa đổi mà không cần bất kỳ thủ thuật cắt lát nào. Tuy nhiên, để đưa danh sách trở lại một chuỗi bạn phải sử dụng .join()
bằng một chuỗi trống.
>>> hash = '355879ACB6'
>>> hashlist = list(hash)
>>> hashlist.insert(4, '-')
>>> ''.join(hashlist)
'3558-79ACB6'
Tôi không chắc làm thế nào điều này so sánh về hiệu suất, nhưng tôi cảm thấy nó dễ nhìn hơn các giải pháp khác. ;-)
Tôi đã thực hiện một phương thức rất hữu ích để thêm một chuỗi ở một vị trí nhất định trong Python :
def insertChar(mystring, position, chartoinsert ):
longi = len(mystring)
mystring = mystring[:position] + chartoinsert + mystring[position:]
return mystring
ví dụ:
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, '%'))
chúng ta sẽ có một đầu ra:
-Jorgesys was here!
Jorgesys @was here!
Jorgesys was h%ere!
Tôi nghĩ rằng các câu trả lời trên là tốt, nhưng tôi sẽ giải thích rằng có một số tác dụng phụ không mong muốn nhưng tốt cho họ ...
def insert(string_s, insert_s, pos_i=0):
return string_s[:pos_i] + insert_s + string_s[pos_i:]
Nếu chỉ số pos_i rất nhỏ (quá âm), chuỗi chèn sẽ được thêm trước. Nếu quá dài, chuỗi chèn sẽ được nối thêm. Nếu pos_i nằm giữa -len (string_s) và + len (string_s) - 1, chuỗi chèn được chèn vào đúng vị trí.
Nếu bạn muốn chèn nhiều
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]