【问题标题】:How do I add the ' symbol to a string如何将'符号添加到字符串
【发布时间】:2020-04-15 14:07:54
【问题描述】:

我有人帮助解决了之前的问题,将十六进制转换为字符串,但我希望输出的字符串用 ' 包围 所以它返回'I0KB' 而不仅仅是I0KB

我有什么:

with open('D:\new 4.txt', 'w') as f:
   f.write('if not (GetItemTypeId(GetSoldItem())==$49304B42) then\n')

def hex_match_to_string(m):
    return ''.join([chr(int(m.group(1)[i:i+2], 16)) for i in range(0, len(m.group(1)), 2)])
# ...
line = re.sub(r'\$((?:\w\w\w\w\w\w\w\w)+)', hex_match_to_string, line)
file_out.write(line)

输出:

如果不是 (GetItemTypeId(GetSoldItem())==I0KB) 那么

但我希望它输出

如果不是 (GetItemTypeId(GetSoldItem())=='I0KB') 那么

并使用

def hex_match_to_string(m):
    return ''.join(',[chr(int(m.group(1)[i:i+2], 16)) for i in range(0, len(m.group(1)), 2)],')

...尽管我读到 join(a,b,c) 是组合字符串的方式,但还是给了我一个语法错误。

在此先感谢您的帮助,抱歉,我不知道应该是什么简单的任务。

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    我认为区分将字符串括在 singledoubletriple 引号之间是很重要的。请参阅answers here,了解第三种最常见的用法(所谓的文档字符串)。

    虽然大多数时候您可以交替使用"',但您可以将它们一起使用以避开引号:

    >>> print("''")
    ''
    >>> print('"')
    "
    

    您也可以使用双引号三遍来转义其间的任何双引号:

    >>> print(""" " " "j""")
     " " "j
    

    但我建议不要使用最后一个选项,因为它并不总是按预期工作,例如,print(""""""") 会引发错误。 (当然,您总是可以使用 \ 来转义 any 特殊字符。)

    【讨论】:

      【解决方案2】:

      您不应将引号添加到传递给join参数,而应将join结果 用引号括起来:

      return "'" + ''.join([chr(int(m.group(1)[i:i+2], 16)) for i in range(0, len(m.group(1)), 2)]) + "'"
      

      【讨论】:

        【解决方案3】:

        您可以在反斜杠字符后加上引号( \" 或 \' )。这称为转义序列,Python 将删除反斜杠,并仅将引号放在字符串中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-23
          • 1970-01-01
          • 2015-11-03
          • 1970-01-01
          • 2015-12-10
          • 1970-01-01
          相关资源
          最近更新 更多