我有一个程序可以读取文件的特定行,如此
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}]
等等。
答案 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}]