首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法从Python中的列表中提取并打印原始/文字字符串

有没有办法从Python中的列表中提取并打印原始/文字字符串
EN

Stack Overflow用户
提问于 2013-06-03 23:04:05
回答 1查看 399关注 0票数 0

我正在尝试用Python3.0编写代码来逐行重新格式化数据文件。代码读取每一行,将该行转换为列表,然后读取列表中的每个元素。然后修改每个列表元素并将其复制到输出文件。

问题是有些元素包含反斜杠字符,Python会将其解释为命令或莫名其妙地忽略这些字符。在Python中,有没有办法读取和/或提取列表中的元素作为原始字符串或文字字符串?

我的代码如下:

代码语言:javascript
复制
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蛋白水解|从InterPro的电子标注推断:IPR007484-未知-肽酶活性|从InterPro的电子标注推断:IPR007484

一个示例输出行是: GA10034 7421353 7424287 DpseGA10034从InterPro的电子标注推断出的蛋白质水解:IPR007484-未知-肽酶活性从InterPro的电子标注推断的肽酶活性:IPR007484

将在输出中删除Dpse和GA10034之间的\。

(该脚本还在输出中的每一新行的开头添加一个制表符-从第二行开始;并且令人费解地失败了大约3/4的输入文件,声称“没有右引号”;但我认为最好一次解决一个问题)

EN

回答 1

Stack Overflow用户

发布于 2013-06-03 23:52:15

您的问题似乎是在创建解析器时指定了posix = True,解析器解释反斜杠和引号。但是,听起来您并不想要这些行为,所以您应该使用posix = False

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16899866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档