我在之前的问题上有人帮助将十六进制转换为字符串,但是我希望输出的字符串用'
包围
因此它返回'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)
是组合字符串的方式,也会给我一个语法错误。
预先感谢您的帮助,对不起,我对应该是一件容易的事情一无所知。
答案 0 :(得分:0)
您可以在反斜杠字符后加上引号(\“或\'),这称为转义序列,Python会删除反斜杠,仅在字符串中加上引号。
答案 1 :(得分:0)
您不应将引号添加到传递给join
的参数中,而应用引号将join
的结果括起来:>
return "'" + ''.join([chr(int(m.group(1)[i:i+2], 16)) for i in range(0, len(m.group(1)), 2)]) + "'"
答案 2 :(得分:0)
我认为区分在单, double 或 triple 引号之间的字符串是很重要的。有关第三个(所谓的文档字符串)的最常用用法,请参见answers here。
虽然大多数时候您可以互换使用@available(iOS 13, *)
class SceneDelegate: UISceneDelegate {
}
和"
,但是为了避免引号,您可以将它们一起使用:
'
您也可以使用两次双引号来使两者之间的任何双引号转义:
>>> print("''")
''
>>> print('"')
"
但是我建议不要使用最后一个选项,因为它不能总是按预期运行,例如,>>> print(""" " " "j""")
" " "j
会引发错误。 (当然,您总是可以使用print(""""""")
来转义任何特殊字符。)