2013-08-30 67 views
2

python中的C的strncpy()是否有任何等價的函數? 我想從第一個字符串替換第二個字符串中的6個字符。 '美妙'應該被'美麗'取代。以下是C中的代碼。python中是否有任何strncpy()等價函數?

str1 = "wonderful"; 
str2 = "beautiful"; 
strncpy(str2,str1,6); 

我想在python中這樣做。

在此先感謝。

+4

python中的字符串是不可變的。 – zsong

回答

5

你不要在Python中複製字符串,因爲它們是不可變的。您只需重新分配是這樣的:

str2 = str1[:6] + str2[6:] 

你也有你的目標和源字符串混淆。

6

我想從第一串

str2 = str1[:6] + str2[6:] 
+2

-0。如果不提及字符串的不變性,我不認爲這個答案是完全準確的。 –

4

Python中的字符串是不可改變的更換第二個字符串中6個字符,所以像你在其他語言中你無法修改它們。你必須創建一個新的字符串並重新分配str2

str2 = str1[:6] + str2[6:] 
3

您可以使用bytearray如果你想就地修改(正常的字符串是不可改變的)

>>> str1 = bytearray("wonderful") 
>>> str2 = bytearray("beautiful") 
for i in xrange(6): 
    str2[i] = str1[i] 
...  
>>> print str2 
wonderful 

功能:

def strncpy(a, b, ind1, ind2): 
    for i in xrange(ind1-1, ind2): 
     a[i] = b[i] 
...   
>>> str1 = bytearray("wonderful") 
>>> str2 = bytearray("beautiful") 
>>> strncpy(str2, str1, 1, 6) 
>>> print str2 
wonderful 
+3

字節數組也支持切片:'str2 [:6] = str1 [:6]' – Blender

相關問題