AttributeError:'list'对象在尝试删除'/ n'时没有属性'replace'

问题描述 投票:0回答:2

我有一堆文件需要重命名。我在文本文件中按顺序获取了名称,我需要删除在读取文本文件时插入的换行符,但我一直收到此错误。 AttributeError:'list'对象在尝试删除'/ n'时没有属性'replace'

任何和所有的帮助表示赞赏,我真的不知道我在做什么。

from os import rename, listdir


fnames = listdir('.')
file = open("names.txt", "r")
namelist = [line.split(' ') for line in file.readlines()]
namelist = [n.replace('\n', '') for n in namelist]

print (namelist)
python python-3.x attributeerror
2个回答
2
投票

问题是,在split之后,n中的每个namelist已经是一个字符串列表。

如果你想删除行尾的换行符,你可以将两个推导,第一个removesplit反转,或者只将它们组合成一个。此外,您可以使用replace来删除行尾的换行符,而不是strip

namelist = [line.strip().split(' ') for line in file]

0
投票

.readlines()返回一个行列表,每行以\n结尾。没有必要在其他地方期待它(假设您在阅读文件时使用通用换行符:mode "r",而不是"rb")。

如果只是迭代文件(它也产生线条),整个事情可以缩短很多:

namelist = []
for line in input_file:  
    namelist.extend(line.rstrip('\n').split(' ')) 

作为一项有趣的练习,它可以制成一个单行(效率稍低):

namelist = sum((line.rstrip('\n').split(' ') for line in file), [])
© www.soinside.com 2019 - 2024. All rights reserved.