【问题标题】:Special Characters in string literals字符串文字中的特殊字符
【发布时间】:2015-01-20 23:05:46
【问题描述】:

我正在用 Python 制作一个集合来容纳我键盘上的所有符号,但显然有一些会带来一些问题。有没有办法让它们全部放在那里而不会遇到问题?

这是我的一套:

symbols = {`,~,!,@,#,$,%,^,&,*,(,),_,-,+,=,{,[,},},|,\,:,;,",',<,,,>,.,?,/}

为了避开注释掉大部分内容,因为在 Python 中 # 是注释,所以我将所有内容都包含在内:

symbols = {'`','~','!','@','#','$','%','^','&','*','(',')','_','-','+','=','{','[','}','}','|','\',':',';','"',''','<',',','>','.','?','/'}

这适用于该角色,但现在当我遇到 '\ 时,我已经看到了一个问题。有没有更好的方法来制作这个套装?

【问题讨论】:

  • 好的,所以你需要将这些字符存储为字符串。您的第一行不会因为注释字符而失败,而是因为您不能只键入一堆不在字符串中的文本并期望它起作用。剩下的,您需要了解如何“转义”字符串中的特殊字符,并且可能要弄清楚您想要一个 list 还是一个 set 来将字符串存储在.
  • 请注意,我修正了您的术语。您所拥有的是set,而不是数组。事实上,Python 没有内置的数组类型(除非你使用的是array.array)。相反,我们使用lists

标签: python string set


【解决方案1】:

您可以通过转义来修复反斜杠,' 可以通过将其放在双引号中来修复:

symbols = {..., '\\', ... "'", ...}

但是输入所有这些内容非常乏味。为什么不直接使用string.punctuation

>>> from string import punctuation
>>> set(punctuation)
{'~', ':', "'", '+', '[', '\\', '@', '^', '{', '%', '(', '-', '"', '*', '|', ',', '&', '<', '`', '}', '.', '_', '=', ']', '!', '>', ';', '?', '#', '$', ')', '/'}
>>>

【讨论】:

    【解决方案2】:

    我宁愿把它们都放在三引号中,像这样。它会忽略任何特殊字符:

    `''' `,~,!,@,#,$,%,^,&,*,(,),_,-,+,=,{,[,},},|,\,:,;,",',<,,,>,.,?,/'''`
    

    【讨论】:

    • 你也可以使用原始字符串
    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2011-05-29
    相关资源
    最近更新 更多