我正在尝试在 Python 3.0 中编写代码以逐行重新格式化数据文件。代码读取每一行,将该行转换为列表,然后读取列表的每个元素。然后修改每个列表元素并将其复制到输出文件中。
问题是某些元素包含反斜杠字符,Python 会将其解释为命令或莫名其妙地忽略。Python中有什么方法可以读取和/或提取列表的元素作为原始字符串或文字字符串?
我的代码如下:
import shlex
import sys
import fileinput
import string
inputFile = list(open("inputfile.txt","r"))
outputFile = open("outputFile.txt","a")
for i in range(1,len(inputFile)):
print(inputFile[i])
line = shlex.shlex(inputFile[i], posix = True)
line.whitespace = "\t"
line.whitespace_split = True
line = list(line)
for j in range(0,3):
cell = line[j]
cell_1 = cell.replace("\\","\\\\")
outputFile .write(("%s\t")%(cell_1))
for k in range(4,len(line)):
cell = str(line[k])
cell_1 = cell.replace(" | ","\t")
if cell_1 == "-":
outputFile .write("-\t-\t")
if cell_1 == "unknown":
outputFile .write("unknown\t-\t")
else:
outputFile .write(("%s\t")%(cell_1))
输入示例为:GA10034 7421353 7424287 FBgn0070093 Dpse\GA10034 proteolysis | 从 InterPro:IPR007484 的电子注释推断 - - - - 未知 - - - 肽酶活性 | 从 InterPro 的电子注释中推断:IPR007484 - - - - - -
示例输出行是: GA10034 7421353 7424287 DpseGA10034 proteolysis inferred from electronic annotation with InterPro:IPR007484 - - - - - - - - - - - unknown - - - - - - - - - - peptidase activity inferred from electronic annotation with InterPro:IPR007484 - - - - - - - - - -
输出中删除了 Dpse 和 GA10034 之间的 \。
(该脚本还在每个新行的开头添加一个制表符 - 从第二行开始 - 在输出中;并且莫名其妙地在输入文件的 3/4 处失败,声称“没有结束引号";但我认为最好一次解决一个问题)