我正在努力解決python中的一個基本問題。我需要在某個位置讀取一個字符串以修改它。閱讀一個字符串位置
例如:對於字符串'abcd'
我想讀取第3個位置(第2個確實是因爲您從0開始),並將其更改爲字母表的下一個字母'abdd'
。但是,如果字符串碰巧是'abrd'
,應該更改爲'absd'
等。所以,我需要閱讀和寫入一個特定的位置,並讓所有其他東西不變;應該是世界上最簡單的東西,但我找不到如何去做。
我正在努力解決python中的一個基本問題。我需要在某個位置讀取一個字符串以修改它。閱讀一個字符串位置
例如:對於字符串'abcd'
我想讀取第3個位置(第2個確實是因爲您從0開始),並將其更改爲字母表的下一個字母'abdd'
。但是,如果字符串碰巧是'abrd'
,應該更改爲'absd'
等。所以,我需要閱讀和寫入一個特定的位置,並讓所有其他東西不變;應該是世界上最簡單的東西,但我找不到如何去做。
爲核心的回答你的問題很簡單:使用列表切片語法:
>>> string='abcd'
>>> print string[:2] + 'd' + string[3:]
abdd
如果你認爲它是安全的,只是增加字符串的序號值,那麼你可以這樣做:
>>> string='abrd'
>>> string=string[:2] + chr(ord(string[2]) + 1) + string[3:]
由於沒有在您的問題中指定,所以我會假設這就是您的需要。如果你想從'z'循環到'a',或者特別處理不同的字母或unicode字符集,你可能會發現一些粗糙的補丁。
如果做已經不僅僅是遞增ord
一個更復雜的問題,可以考慮使用translation table
除了@kojiro答案。另一種方法是將字符串切換爲列表並將其加入。例如:
S = 'abcd'
// Convert to list
L = list(S)
// Change 3rd position
L[3] = 'd'
// Join it back and print
print ''.join(L)
但是,如果需要替換不同的字符,可以定義一個字典映射緩解轉換過程。例如:
// Define {a -> x} mapping.
M = {'c': 'd', 'r': 's'}
// Substitution
L[3] = M[L[3]]
謝謝,這很有用 –
我想你需要澄清一下你的問題。你是否希望改變**特定位置的字符串**?例如,不管第三個字符是「r」還是「c」,都要改變第三個位置。或者你正在尋找**搜索字符串'r' **:如果'r'改變了第四個位置,如果'c'改變了第三個位置等等。 – nqngo
如果字母是'z'會怎麼樣? – pcalcao