【问题标题】:Python(3.x) - Opening File and Removing the Quotation Marks when reading filePython(3.x) - 读取文件时打开文件并删除引号
【发布时间】:2014-12-08 22:56:11
【问题描述】:

我目前正在尝试加载文件中包含以下内容的 .txt 文件:

['胸部', ['板凳', '倾斜'], [2, 1], [10, 10], [10, 20, 10]], '胸部', ['下降'], [ 1]、[1]、[10]

当我加载文件时,读取文件上的信息并将其存储在一个名为content的变量中:

    self.file_name = filedialog.askopenfilename()
    if self.file_name is None:
        return
    with open(self.file_name) as f:
        content = f.read().splitlines()

当我打印出内容时:

    print(content)

我得到以下输出:

["['Chest', ['bench', 'incline'], [2, 1], [10, 10], [10, 20, 10]], 'Chest', ['decline'], [1], [1], [10]"]

问题是打印时有引号。有没有办法摆脱“”?原因是因为它是一个二维列表和print([0][1]),我得到的结果是'而不是chest

【问题讨论】:

  • 您可以按如下方式替换字符串:a_str.replace('"','')。不确定这是否是您所追求的。请确认。
  • @Marcin 我似乎无法弄清楚a_str.replace('"','') 会在我的代码中出现的位置。它会在content =.... 之后出现吗?
  • 这个呢? content[0].replace('"','')

标签: python python-3.x openfiledialog filedialog


【解决方案1】:

如果您的内容包含表示正确 python 文字代码的语法,您可以将其直接解析为 python 数据:

content = ["['Chest', ['bench', 'incline'], [2, 1], [10, 10], [10, 20, 10]], 'Chest', ['decline'], [1], [1], [10]"]

import ast
a_tuple = ast.literal_eval(content[0])
print(a_tuple)

产生一个包含解析字符串的元组:

(['Chest', ['bench', 'incline'], [2, 1], [10, 10], [10, 20, 10]], 'Chest', ['decline'], [1], [1], [10])

【讨论】:

  • 你从哪里得到ast.?当我这样做时,我收到以下错误:NameError: name 'ast' is not defined
  • ast 是标准的 Python 模块。导入它import ast。链接是here
【解决方案2】:

print(content[0])

content 变量保存了一个由单个字符串组成的数组。当您执行print(content[0][1]) 时,您打印了字符串的第二个字符。打印字符串时,不显示外引号,但打印数组时,会显示外引号(因此您可以看到每个字符串的开始和结束位置)。

【讨论】:

  • 当我这样做时,我得到['Chest', ['bench', 'incline'], [2, 1], [10, 10], [10, 20, 10]], 'Chest', ['cola'], [1], [1], [10] 的结果,因为它是一个二维列表。我没有得到 Chest 的结果
  • 这是一个看起来像二维列表的字符串。这不是一个二维列表。你需要先把它变成一个。
  • @Havyy 我明白你的意思,但我究竟如何将其转换为二维?
猜你喜欢
  • 2017-03-02
  • 2014-11-12
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
相关资源
最近更新 更多