【问题标题】:Translate table with a range as key, how can I do it? (Python)翻译以范围为键的表格,我该怎么做? (Python)
【发布时间】:2021-12-24 23:42:40
【问题描述】:

我想对属于 ASCII 表中特定范围的文本中的任何字符使用翻译功能,以便用空格替换这些字符中的每一个。我想这样做是为了避免写很多具有相同值(“”)的键。这是我尝试过的(来自 txt 文件):

for line in text.readlines():

    table = {range(33,126): " "}

    for character in line:
        line.translate(table)

我显然做错了什么,因为它不起作用。另外,我不想导入任何库。感谢您的帮助。

【问题讨论】:

  • “它不起作用”是什么意思?
  • table = {range(33,126): " "} 的结果是什么?我认为它不会产生您期望的字典结构。
  • 如果你想把可打印的字符翻译成ASCII,那么你想在里面包含126,这意味着你需要做range(33, 127)

标签: python range key ascii translate


【解决方案1】:

您可以使用值32 - ASCII 空间代码自动生成包含范围内所有键的字典。所以你不需要手动写字典(如果它是你的意思)

table = {i:32 for i in range (33, 126)}

【讨论】:

  • 这很好用,谢谢
【解决方案2】:

你不能在 dict 这样的定义中使用范围,因为它不会为你解开。

你最终会得到一个dict,比如{ <<ARangeObject>>: " " },当python检查值charecter是否在字典中时,因为charecter != RangeObject,它总是会说这个字符不在翻译映射中并且你翻译什么都没有。

您可能打算像这样创建字典,展开,如下所示:

table = { ascii_val: ord(" ") for ascii_val in range(33, 126) }

【讨论】:

  • 这很好用,谢谢
猜你喜欢
  • 2015-07-30
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 2021-11-03
  • 2023-03-25
相关资源
最近更新 更多