将列表转换为字符串再转换回列表 [Python]

0 投票
4 回答
1720 浏览
提问于 2025-04-16 21:39

我遇到了一个问题,关于如何把列表转换成字符串以便进行编辑。

我有一个文件,里面的文本内容是这些名字:

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']

我想把这些东西 [ , ' 删除掉。

我试过用 stripreplace('[',''),但没成功。

有没有什么好主意?

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' 风格。 不过,养成在读取完文件后关闭它的习惯是更好的。

2

你不需要把它转换成字符串,就可以在每个元素的后面加上 Ok:1

你可以用一种叫做 列表推导式 的方式来做到这一点,像这样:

iamNewList = [e.rstrip() + 'Ok:1' for e in iamList]

另外,如果想简单一点,你也可以这样做:

iamNewList = []
for e in iamList:
    iamNewList.append(e.rstrip() + 'Ok:1')

注意,rstrip 可以去掉字符串末尾的所有空白字符,比如换行符,我想这正是你想要的效果。

撰写回答