2017-04-24 70 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