【问题标题】:Does python support character type?python支持字符类型吗?
【发布时间】:2019-04-05 11:05:00
【问题描述】:

当我检查数据类型时,我想知道为什么 char 值作为字符串类型返回。

请看我的输入和输出。

输入:

a = 'c'

type(a)

输出:

class 'str'

【问题讨论】:

  • 不,它没有。
  • chr(n) 将返回一个带有一个字符的字符串。
  • 我对字符编码了解得越多,我就越喜欢在 Python 中选择不使用字符类型。有很多字符(尽管我脑海中唯一能想到的是国旗表情符号)无法用单个 Unicode 代码点表示,所以为什么不现实一点并接受行字符文字是基本上是字符串?

标签: python


【解决方案1】:

Python 中没有built-in 字符类型,有intstrbytes。如果您打算使用用户字符,则可以使用长度为 1 的str

注意 Python 是动态类型的,你不需要声明变量的类型。

您使用引号 '、双引号 " 和三引号 """ 创建的所有字符串都是字符串 (unicode):

type("x")
str

当调用built-in函数type时,它会返回一个type对象,代表你的变量类型:

type(type("x"))
type

整数和字符确实有映射功能(编码),清醒映射原生是ASCII,见chrord内置函数。

type(123)
int

type(chr(65))
str

type(ord("x"))
int

如果您必须处理默认字符集中不可用的特殊字符,则必须考虑编码:

x = "é".encode()
b'\xc3\xa9'

函数encode,将你的字符串转换成字节并且可以解码回来:

x.decode()
'é'

方法encodedecode分别属于对象strbytes

【讨论】:

  • 这是一个关于 Python 中字符的非常详细(但不一定完整)的陈述,但对于这样一个简单直接的问题来说太复杂了。
  • @jonspencer,感谢您分享您的意见。真的是这么简单的问题吗?
  • @jlandercy 我同意你的观点,可能存在潜在的复杂性取决于编码,但我确实认为这个问题非常简单明了 - 是否有字符类型,为什么type返回str? @collector 回答简单,我认为这反映了提问者的专业水平。您提供了更详细的回复,更适合不同的提问者。如果你停在第一行,你的答案就会被赞成。
  • @Jon Spenser 我认为有一个简短的答案和一个“为什么”的答案是值得的。 StackOverflow 更像是一个具有问答格式的 wiki,而不是一个问答网站,因此无需像个人被问到问题那样专注于提问者。
  • Python 不是弱类型。动态的,是的,但弱,不是。例如,弱类型意味着1 + "2" == 3
【解决方案2】:

有一个bytes type 可能是类似的,具体取决于您询问的原因。

>>> b'a'
=> b'a'

https://docs.python.org/3/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit

【讨论】:

    【解决方案3】:

    没有。

    Python 没有字符或char 类型。所有单个字符都是长度为 1 的字符串。

    【讨论】:

    • @Avinash 没问题。如果有帮助,您可以将其标记为已回答。或任何其他回答问题的人。
    猜你喜欢
    • 1970-01-01
    • 2020-07-09
    • 2015-09-13
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    相关资源
    最近更新 更多