我遇到了一个问题,它是关于从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']
我想删除这些东西[ , '
我尝试了strip
和replace('[','')
任何想法?
答案 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")