将列表转换为字符串然后将其返回列表[Python]

时间:2011-07-16 00:31:19

标签: python edit strip

我遇到了一个问题,它是关于从List转换为String来编辑它

我有文件内容这些名称

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 :(得分:2)

您无需将其转换为字符串即可在每个元素的末尾添加Ok:1

您可以使用list comprehension这样做:

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

或者,为了不那么花哨,你可以这样做:

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

注意,rstrip从字符串的末尾开始删除所有空格,例如换行符,我认为这就是你想要的。

答案 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()',因为os.linesep(通常为'\ n')可能与文件中使用的行分隔不同,每行仍然带有'\ n'。< / p>

关于您的方法: 因为iamList是一个List,所以由str(iamList)创建的List的表示 已包含括号'['和逗号',': 这些是字符串表示的一部分。 print('imSting: ' + imSting)会显示此信息。 因此,您可以将'\ n'替换为'Ok:1',直接从imSting中删除 将新字符串放入','部分列表:

(imSting.replace(r"\n", 'Ok:1')[2:-2] + 'Ok:1').split("', '")

[2:-2]仅返回['和']之间的字符,从而有效地删除括号。

第一种解决方案几乎可以是单行,更容易阅读,因此更多'Pythonic'。 但是,养成阅读后关闭文件的习惯会更好。

答案 2 :(得分:0)

iamList = O.readlines()会为您提供一份清单。

您不希望将该列表转换为字符串。不惜一切代价避免操纵弦乐;这是糟糕的编码习惯。(出于这个原因,我也担心你为每个字符串添加'Ok:1'的原因。)

相反,只需执行[x+' OKAY!' for x in yourFile.read().splitlines()]

但是你应该说为什么要添加“Ok:1”,因为看起来你可能会采取错误的方式。 你应该说出你真正要做的事情。

答案 3 :(得分:0)

您的代码不起作用。最后一行最后没有换行符,因此你没有“Ok:1”。

试试这个:

[b.replace("\n","") + "Ok:1" for b in open("C:\\py\\a.txt","r")]

“Expanded”版本:

newList = []
for b in open("C:\\py\\a.txt","r"):
  newList.append(b.replace("\n","") + "Ok:1")