我有一堆我需要重命名的文件。我在文本文件中按顺序获取了名称,我需要删除在读取文本文件时插入的换行符,但我一直收到此错误。 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)
答案 0 :(得分:2)
问题是split
n
namelist
中的remove
已经是列字符串。
如果要删除行末尾的换行符,可以将两个推导值反转为第一个split
然后replace
,或者将它们合并为一个。另外,您可以使用strip
代替namelist = [line.strip().split(' ') for line in file]
来删除行尾的换行符。
from utilitybelt import change_charset
origspace = "abcdefghijklmnopqrstuvwxyz"
keyspace = "abcd3fgh1jklmnopqr57uvwxyz"
print(change_charset("leetspeak",origspace, keyspace))
#l3375p3ak
答案 1 :(得分:0)
.readlines()
返回一个行列表,每行以\n
结尾。没有必要在其他任何地方指望它(假设您在阅读文件时使用通用换行符:模式"r"
,而不是"rb"
)。
如果只是迭代文件(它也产生线条),整个事情可以缩短很多:
namelist = []
for line in input_file:
namelist.extend(line.rstrip('\n').split(' '))
作为一项有趣的练习,它可以成为一个单行(效率稍低):
namelist = sum((line.rstrip('\n').split(' ') for line in file), [])