2017-04-24 53 views
0

我想要做一些文本處理,主要是re.sub()命令。我知道我不能改變一個字符串,但即使在我嘗試將字符串轉換爲一個列表並逐個更改元素之後,輸出仍然沒有變化。要編輯的Python字符串

我想知道的是:a)我的代碼出錯了,b)使用bytearray比list更好嗎?

with open("responses_test.txt", "r+") as f: 
    responsesIPA = f.readlines() 

for row in responsesIPA: 
    row = list(row) 
    row = [i.lower() for i in row] 
    row = [re.sub("3", u"\u0259", i) for i in row] 
    row = "".join(row) 
+0

字符串是不可變的,但你可以指定一個新的值,即'行=應用re.sub( 「3」,U 「\ u0259」,行)' –

+0

請提供例如輸入和預期的輸出。 – Uriel

+0

*輸出仍然沒有變化*:你是否想要在改變它之後在某處保存'row'? – Brian

回答

0

你不需要轉換爲列表來實現你想要實現的目標。

for row in responsesIPA: 
    row = row.lower() 
    row = row.replace("3","\u0259") 
    print row 
+0

我想這一點,以及做 行=應用re.sub( 「3」,U 「\ u0259」,行) 代替 行= row.replace( 「3」, 「\ u0259」) 但我的輸出仍然與我的輸入完全一樣。 – bkula

+0

@bkula你的Python版本是什麼? – Uriel

+0

你究竟如何使用行?你是否試圖將你更新的字符串反映到responseIPA列表中? – alpeshpandya