将列表转换为字符串再转换回列表 [Python]
我遇到了一个问题,关于如何把列表转换成字符串以便进行编辑。
我有一个文件,里面的文本内容是这些名字:
Roby
Bucky
johan
然后我想在每个名字旁边加上 OK:1
。
所以我写了这段代码:
Names='a.txt' # here is the names
O=open(Names,'r') # we open the file content the names
iamList=O.readlines() # read the name it would be List !
imSting=str(iamList) # convert it to string
Edit=imSting.replace(r"\n","Ok:1") # Editing by adding
noname=Edit
noname=noname.split()
for PT in noname:
PT.strip('[')
print PT
结果我得到了这个:
['RobyOk:1',
'BuckyOk:1',
'johan']
我想把这些东西 [ , '
删除掉。
我试过用 strip
和 replace('[','')
,但没成功。
有没有什么好主意?
4 个回答
0
你的代码不太对。最后一行没有换行符,所以你那里没有“Ok:1”。
试试这个:
[b.replace("\n","") + "Ok:1" for b in open("C:\\py\\a.txt","r")]
“扩展版”:
newList = []
for b in open("C:\\py\\a.txt","r"):
newList.append(b.replace("\n","") + "Ok:1")
1
解决方案:
f = open('a.txt')
names = [line.strip() + 'Ok:1' for line in f.readlines()]
f.close()
for name in names:
print(name)
我用了 'line.strip()',因为操作系统的行分隔符(通常是 '\n')可能和你文件里的行分隔符不一样,这样每一行就会保留一个 '\n'。
关于你的方法:
因为 iamList 是一个列表,用 str(iamList) 转换这个列表时,已经包含了方括号 '[' 和逗号 ',':这些都是字符串表示的一部分。
print('imSting: ' + imSting)
会显示这个内容。
所以你可以直接在 imSting 中把 '\n' 替换成 'Ok:1',然后通过逗号 ', ' 把新的字符串分割成一个列表:
(imSting.replace(r"\n", 'Ok:1')[2:-2] + 'Ok:1').split("', '")
[2:-2]
这个部分只返回方括号之间的字符,从而有效地去掉了方括号。
第一个解决方案几乎可以写成一行代码,而且更容易阅读,因此更符合 'Pythonic' 风格。 不过,养成在读取完文件后关闭它的习惯是更好的。