【问题标题】:replace element of a list by appending escape character to each element通过将转义字符附加到每个元素来替换列表的元素
【发布时间】:2014-06-12 19:27:53
【问题描述】:

如何在 python 中将 '1c' 替换为 '\x1c'。我有一个包含 '12'、'13' 等元素的列表,并想用 '\x12'、'\x13' 等替换。

这是我尝试过但失败了

 letters=[]
 for i in range(10,128,1):
      a=(str(hex(i))).replace('0x','\x')
      letters.append(a)
      print letters

我需要将 '31' 替换为 '\x31' ---> '1' 而不是 '\x31' 0r \x31

【问题讨论】:

  • 慢慢明白你的问题了。您不希望将十六进制表示为字符串,而是希望使用十六进制数字的字符表示:letters = [chr(i) for i in range(10,128)]

标签: python string list replace


【解决方案1】:

您的代码很好,您只需要使用\ 转义\

letters=[]
for i in range(10,128,1):
    a=(str(hex(i))).replace('0x','\\x')   #you have to escape the \
    letters.append(a)
    print letters

DEMO

【讨论】:

  • 兄弟它给了我 '\\x31' 作为我需要的元素是 '\x31' --> '1'
  • @ceasif,是的,但是当您打印特定元素时,您得到\x31
  • 这只是一个字符串的表示:如你所见len('\\') == 1只有一个字符
  • @sshashank124 谢谢兄弟你的回答对我很有帮助:)
【解决方案2】:

完成任务的最佳方法是使用字符串格式,这样您就不必替换任何内容,并且代码看起来更清晰:

letters = ['\\x%x' % i for i in range(10, 128)]
print letters

【讨论】:

  • 请看看这是我的问题@Denial
【解决方案3】:

您需要使用内置函数chr 来返回正确的ascii 码(也就是您要查找的字符串):

>>> [chr(i) for i in range(10,20,1)]
['\n', '\x0b', '\x0c', '\r', '\x0e', '\x0f', '\x10', '\x11', '\x12', '\x13']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-16
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多