AttributeError: 'list' object has no attribute 'replace' while trying to remove '/n'
AttributeError: 'list' object has no attribute 'replace' while trying to remove '/n'
我有一堆文件需要重命名。我在文本文件中按顺序获得了名称,我需要删除读取文本文件时插入的换行符,但我一直收到此错误。 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)
问题是在 split
之后 namelist
中的每个 n
已经是一个 list 字符串。
如果要去掉行尾的换行符,可以将两种推导式反过来,先remove
再split
,也可以合二为一。此外,您可以使用 strip
代替 replace
来去除行尾的换行符。
namelist = [line.strip().split(' ') for line in file]
.readlines()
returns 行列表,每行以 \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), [])
我有一堆文件需要重命名。我在文本文件中按顺序获得了名称,我需要删除读取文本文件时插入的换行符,但我一直收到此错误。 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)
问题是在 split
之后 namelist
中的每个 n
已经是一个 list 字符串。
如果要去掉行尾的换行符,可以将两种推导式反过来,先remove
再split
,也可以合二为一。此外,您可以使用 strip
代替 replace
来去除行尾的换行符。
namelist = [line.strip().split(' ') for line in file]
.readlines()
returns 行列表,每行以 \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), [])