从多个同时打开的文件的行中删除'\ n'

时间:2015-04-29 06:21:04

标签: python

我需要打开一个小但可变数量的文件,每个文件都有相同的行数。然后我需要在每个中返回一行元组。我的代码返回一个元组,但每个元素都保留其'\ 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

我知道那里有答案!寻找建议。谢谢你&祝你有个美好的一天。

3 个答案:

答案 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))

但是,我没有测试过这个。