我需要打开一个小但可变数量的文件,每个文件都有相同的行数。然后我需要在每个中返回一行元组。我的代码返回一个元组,但每个元素都保留其'\ n';如何在它被打包到元组之前去除它?
这是到目前为止的代码
files = ['file1', 'file2', 'file3']
fds = [ open(file) for file in files ] # gets all file open at same time
read_fds = izip( *fds )
for tpl in read_fds:
print tpl # will become a 'yield' stmt once the '\n' is sorted
for fd in fds:
fd.close()
我有一个3个文件的测试集,每个文件有5行,每行代表文件号行号。代码打印这些测试文件的准确记录。
('f1ln1\n', 'f2ln1\n', 'f3ln1\tthis\tthat\n')
('f1ln2\n', 'f2ln2\n', 'f3ln2\tthis\tthat\n')
('f1ln3\n', 'f2ln3\n', 'f3ln3\tthis\tthat\n')
('f1ln4\n', 'f2ln4\n', 'f3ln4\tthis\tthat\n')
('f1ln5\n', 'f2ln5\n', 'f3ln5\tthis\tthat\n')
到目前为止一直很好,但是如何在它被打包到元组之前从每一行中删除(\ n)?\ n \ n
我知道那里有答案!寻找建议。谢谢你&祝你有个美好的一天。
答案 0 :(得分:1)
您也可以使用字符串切片
for tpl in read_fds:
list_stripped = []
for s in tpl:
list_stripped.append(s[:-1])
print tuple(list_stripped)
答案 1 :(得分:0)
怎么样:
for tpl in read_fds:
templist = []
for item in tpl:
templist.append(item.rstrip("\n"))
print tuple(templist)
这将删除字符串右侧的任何换行符
答案 2 :(得分:0)
我认为最简单的方法是将作业修改为read_fds
,以便从izip
生成修改过的元组:
read_fds = (tuple(s.rstrip() for s in tup) for tup in izip(*fds))
但是,我没有测试过这个。