逐行读取和分析输出数据

时间:2018-05-22 06:54:38

标签: python-3.x

我有一个程序可以读取文件的特定行,如此

with open("FastQ_Test.txt", "r") as infile:
c = 1
for line in infile:
    if c == 4:
       print(line)

        c = 1
    else:
        c += 1

然后从结果中创建一个字典,输出小于所述数字及其索引的ASCII值

for text in line:
    char = ord(text)
    print(char, end = " ")
    num += 1
    result[char] = set()
    result[char].add(num)

    row = list(result.keys())

    for i in range(len(row)):
        if row[i] < 80:
           print('[', row[i], ':', result[row[i]], ']', end=" ")

不要介意缩进和所有。 我的问题是,我想分析从第一段代码中读取的行。逐行。它的作用是,它完美地分析了第一行,但是当涉及到其他行时,它会从第一行的结束处读取。

E.g。文件

    WDDDDFRWWW
    +
    RFFWEGDDEE
    +
    TTTDDDEEWW

读取第1,3和5行后的所需输出

    line 1 -> [87: {1, 8, 9, 10}, 68: {2, 3, 4, 5}, 70: {6}, 82: {7}]
    line 2 -> [82: {1}, 70: {2, 3}, 87: {4}, 69: {5, 9, 10}, 71: {6}, 68: {7, 8}]

等等。

1 个答案:

答案 0 :(得分:0)

我不清楚你的目标是什么,但下面是一个简单的脚本,可以为你提供所需的输出

我试图尽可能少地改变,但尽可能地引入新的想法和技术,希望这会有所帮助

with open("FastQ_Test.txt", "r") as infile, open("output.txt", 'w') as outfile:
    for line in infile:
        if line.strip() == '+':
            continue

        result = {}
        for i, text in enumerate(line.strip()):
            char = ord(text)
            if char not in result.keys():
                result[char] = set()
            result[char].add(i + 1)

        row = list(result.keys())

        print_list = []
        for i in result.keys():
            print_list.append("{}: {}".format(i, result[i]))
        # print("[{}]".format(", ".join(print_list)))
        outfile.write("[{}]\n".format(", ".join(print_list)))

输出

[87: {8, 1, 10, 9}, 68: {2, 3, 4, 5}, 70: {6}, 82: {7}, 10: {11}]
[82: {1}, 70: {2, 3}, 87: {4}, 69: {9, 10, 5}, 71: {6}, 68: {8, 7}, 10: {11}]
[84: {1, 2, 3}, 68: {4, 5, 6}, 69: {8, 7}, 87: {9, 10}]