【问题标题】:Is there any way to extract and print a raw/literal string from a list in Python有什么方法可以从 Python 列表中提取和打印原始/文字字符串
【发布时间】:2013-06-03 15:04:04
【问题描述】:

我正在尝试在 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 蛋白水解 |从InterPro 的电子注释推断:IPR007484 - - - - 未知 - - - 肽酶活性|从带有 InterPro:IPR007484 的电子注释推断 - - - - - -

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

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

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

【问题讨论】:

  • 您能添加一个带有输入和所需输出的示例吗?
  • 那么...您的实际问题是什么?预期输出是多少,与实际输出相比如何?如果您真正向我们展示您遇到的问题,您会得到更多关注。老实说,在我看来,您可能只是想多了。

标签: python string list python-3.x


【解决方案1】:

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

【讨论】:

  • 谢谢加布!这解决了问题。
猜你喜欢
  • 1970-01-01
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
相关资源
最近更新 更多