我从文件中读取并将每个字符存储在二维数组中。我试图摆脱' \ n'在每一行的末尾。到目前为止我的代码是:
l = []
for i in range(5):
l.append([])
f = open('file.txt','r')
count = 0
for line in f:
for char in line:
l[count].append(char)
count += 1
f.close()
l[0].rstrip('\n')
我尝试过而不是l[0].rstrip('\n')
:
l = map(lambda s: s.strip('\n'), l)
和
l = [i.rstrip() for i in l ]
其中每个都返回列表没有属性条带(或rstrip)的错误。有没有什么办法解决这一问题?
答案 0 :(得分:1)
l
是列表。因此,如果您拨打l[0].rstrip()
,可以在子列表中rstrip()
。但即使strip()
有效,你也不会看到任何差异,因为字符串是不可变的,因此它将返回一个 new 字符串,而不是更新旧字符串。
但您可以轻松使用:
l[0] = [x.rstrip('\n') for x in l[0]]
仅更新l[0]
。
如果要更新所有子列表,可以使用以下列表解析:
l = [[x.rstrip('\n') for x in s] for s in l]
此外,将文件读入内存的代码非常奇怪:它仅在文件少于六行时才有效。您可以使用以下方法:
with open('file.txt','r') as f:
l = [list(line.rstrip('\n')) for line in f]
这将替换问题中的整个代码片段。