【面试题目来着微信公众号:GitChat】
字符串
- 列举 Python 中的基本数据类型?
【python2.x】数字(int、long、float、complex)、字符串str、列表list、元组tuple、字典dict、布尔值bool、集合set
【python3.x】取消掉了long - 如何区别可变数据类型和不可变数据类型
【可变数据类型】列表、字典、集合
【不可变数据类型】数字、字符串、元组
【区分】变量名映射的是一个内存地址。修改了该变量的值,如果这个地址是不改变的,这种数据类型是可变数据类型;如果这个地址改变了,这种数据类型则为不可变数据类型。python中使用内置函数id()
,可以查看数据类型的内存地址。
【个人理解】可变数据类型可以当做一个容器,容器中的内容改变了,但是容器本身是不改变的;而不可变数据类型可以看做一个不可再分割的原子,稍有不同,这就是另一个原子了。 - 将"hello world"转换为首字母大写"Hello World"
# 每个单词首字母大写,其他字母小写
"hello world".title() # 输出"Hello World"
# 首字母大写,其他全部小写
"hello world".capitalize() # 输出"Hello world"
# 大写换小写,小写换大写
"HELLO world".swapcase() # 输出"hello WORLD"
- 如何检测字符串中只含有数字?
# 是否只含有数字
# 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()
- 将字符串"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)
- Python 中的字符串格式化方式你知道哪些?
"%s" %string
"{}".format(string)
图片引用来自菜鸟教程
- 有一个字符串开头和末尾都有空格,比如“ adabdw ”,要求写一个函数把这个字符串的前后空格都去掉。
“ adabdw ”.strip()
- 获取字符串”123456“最后的两个字符。
"123456"[-2:]
- 一个编码为 GBK 的字符串 S,要将其转成 UTF-8 编码的字符串,应如何操作?
python3的默认编码是unicode,可以通过encode和decode,将其他编码字符转换为unicode的字符,达到相互转化的目的.
# 将GBK转换为unicode
unicodeS = S.decode("gbk")
# 将unicode转换为utf-8
utf8S = unicodeS.encode("utf-8")
- (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)怎样将字符串转换为小写 (2)单引号、双引号、三引号的区别?
# (1)将字符串转换为小写,使用字符串方法,lower()
string.lower()
(2)单引号和双引号都都是单行注释;而三引号是多行注释。不同的引号交叉使用可以在引号中写引号。
面试题目来着微信公众号:GitChat
Python 爬虫面试题 170 道
以上答案皆为鄙人回答,如有问题,敬请诸君指出.
【python面试170题】系列
1. 语言特性
2. 编码规范
3. 数据类型-字符串
4. 数据类型-列表、字典