使用Zip垂直读取文件并搜索压缩列表

时间:2015-12-07 21:51:34

标签: python python-3.x

我需要读取包含不同行信息的文件 - 例如文件可能包含

12345678910
abcdefghij
zyxwvutsrq

然后我需要垂直阅读代码,所以我的列表将是:

(1az)(2by)

到目前为止我的代码是

# grid is the original file that has been read and put into a list
grid2 = zip(*grid) 
for word in words :
        for charc in grid2 :
            if word in charc :
                wordsFound.append(word )

然后我通过我的搜索功能运行zip(*grid),但它只返回整个单词文件,而不仅仅是它找到的单词

任何帮助将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:0)

该程序打印输入文件的列:

with open('input.txt') as input_file:
    rows = input_file.readlines()
rows = zip(*[row.strip() for row in rows])
rows = [''.join(row) for row in rows]
print rows

结果,当使用OP的数据时:

['1az', '2by', '3cx', '4dw', '5ev', '6fu', '7gt', '8hs', '9ir', '1jq']

答案 1 :(得分:0)

您不需要调用readlines或制作任何中间列表,只需转置文件对象,使用map删除换行符:

with open("test.txt") as f:
    # python2 itertools.izip, itertools.imap 
    print(["".join(r) for r in zip(*map(str.rstrip,f))])

输出:

['1az', '2by', '3cx', '4dw', '5ev', '6fu', '7gt', '8hs', '9ir', '1jq']