【python面试170题】3. 数据类型-字符串

【面试题目来着微信公众号:GitChat】

字符串

  1. 列举 Python 中的基本数据类型?
    【python2.x】数字(int、long、float、complex)、字符串str、列表list、元组tuple、字典dict、布尔值bool、集合set
    【python3.x】取消掉了long
  2. 如何区别可变数据类型和不可变数据类型
    【可变数据类型】列表、字典、集合
    【不可变数据类型】数字、字符串、元组
    【区分】变量名映射的是一个内存地址。修改了该变量的值,如果这个地址是不改变的,这种数据类型是可变数据类型;如果这个地址改变了,这种数据类型则为不可变数据类型。python中使用内置函数id(),可以查看数据类型的内存地址。
    【个人理解】可变数据类型可以当做一个容器,容器中的内容改变了,但是容器本身是不改变的;而不可变数据类型可以看做一个不可再分割的原子,稍有不同,这就是另一个原子了。
  3. 将"hello world"转换为首字母大写"Hello World"
# 每个单词首字母大写,其他字母小写
"hello world".title()    # 输出"Hello World"
# 首字母大写,其他全部小写
"hello world".capitalize()    # 输出"Hello world"
# 大写换小写,小写换大写
"HELLO world".swapcase()     # 输出"hello WORLD"
  1. 如何检测字符串中只含有数字?
# 是否只含有数字
# True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
# False: 汉字数字
# Error: 无
string.isdigit()

# True: Unicode数字,,全角数字(双字节)
# False: 罗马数字,汉字数字
# Error: byte数字(单字节)
string.isdecimal()

# True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
# False: 无
# Error: byte数字(单字节) 
string.isnumeric()

# 是否只含有字母
string.isalpha()
# 是否只含有字母或数字
string.isalnum()

# 是否全是小写字母,是否全是大写字母,是否每个单词首字母大写(没有只判断首字母大写的方法)
string.islower()
string.isupper()
string.istitle()

# 是否是空白,是否是打印字符,是否是指定标识符(即python命名规则:只能包含字母数字下划线,只能以字母或下划线开头.)
string.isspace()
string.isprintable()
string.isidentifier()
  1. 将字符串"ilovechina"进行反转
    一时间能想到的三个方法,注意sorted()是排序,不是倒序,面试的时候记叉了。
def test4():
    a = "ilovechina"
    # 1. 直接使用切片,步长-1
    b = a[::-1]
    print(b)
    # 2. 切为列表,遍历列表
    c = list(a)
    d = ""
    for i in range(len(a)):
        d = d + c.pop()
    print(d)
    # 3. 转换为列表,使用列表的reverse()方法
    e = list(a)
    e.reverse()
    f = "".join(e)
    print(f)
  1. Python 中的字符串格式化方式你知道哪些?
"%s" %string
"{}".format(string)

图片引用来自菜鸟教程

  1. 有一个字符串开头和末尾都有空格,比如“ adabdw ”,要求写一个函数把这个字符串的前后空格都去掉。
“ adabdw ”.strip()
  1. 获取字符串”123456“最后的两个字符。
"123456"[-2:]
  1. 一个编码为 GBK 的字符串 S,要将其转成 UTF-8 编码的字符串,应如何操作?
    python3的默认编码是unicode,可以通过encode和decode,将其他编码字符转换为unicode的字符,达到相互转化的目的.
# 将GBK转换为unicode
unicodeS = S.decode("gbk")
# 将unicode转换为utf-8
utf8S = unicodeS.encode("utf-8")
  1. (1)s=“info:xiaoZhang 33 shandong”,用正则切分字符串输出[‘info’, ‘xiaoZhang’, ‘33’, ‘shandong’] (2) a = "你好 中国 ",去除多余空格只留一个空格。
# (1)使用re.split()切割: 多个切割符
re.split(r"[\s:]", s)
re.split(r"(?:[\s:])", s)  # 分组切不捕获分割符

# (2)去除多余空格:这个题目不清楚吧,那个空格是多余的
# 去除两端空格
s.strip()
# 去除中间的空格:去掉全部空格,补充尾巴上的空格
a.replace(" ", "") + " "
  1. (1)怎样将字符串转换为小写 (2)单引号、双引号、三引号的区别?
# (1)将字符串转换为小写,使用字符串方法,lower()
string.lower()
(2)单引号和双引号都都是单行注释;而三引号是多行注释。不同的引号交叉使用可以在引号中写引号。

面试题目来着微信公众号:GitChat
Python 爬虫面试题 170 道
以上答案皆为鄙人回答,如有问题,敬请诸君指出.
【python面试170题】系列
1. 语言特性
2. 编码规范
3. 数据类型-字符串
4. 数据类型-列表、字典

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值