2019年 python 爬虫面试题 参考答案不对的请指出 持续更新 7/7

系统 1087 0

1. import 导入模块
import xxx,xxx,xxx 可以同时导入多个库
建议每次导入一个。

            
              	from xxx  import  xx  从模块中导入指定方法
	xx()导入的方法就直接用

            
          

2. python基本数据类型
数字(int float long complex(复数)) 字符串 列表 字典 元组 集合 py3去除long了,拥抱py3吧
其中complex是高中数学知识,不知道的就直接百度。

3. 区分可变数据类型和不可变数据类型
就是变量的内存地址变不变的问题
可变数据类型:字典dict,列表list
不可变数据类型:整型int 浮点数float 字符串str 元组tuple
比较拗口, 地址不能变的叫可变数据,地址能变到叫不可变数据 ,完全相反的。。。。。。。。。。。

4. 将"hello world"转换为首字母大写"Hello World"
我开始是这么写的,这里有个map函数,功能是把方法映射到后面的列表中每一位。map(方法,列表)=>2个参数

            
              def q(n):

	"""转换大小写方法,没有用for,
	因为for遇到return就结束了,
	那时候的 b = ["H","W"],自己试一下就知道了 """
	
    return n[:1].upper() + n[1:].lower()

if __name__ == '__main__':
    a = ['hello', 'world']
    b = list(map(q, a)) # q是方法,a是列表
    print(b[0]+" "+b[1])
    
    结果是 Hello World

            
          

后来知道有个函数 capitalize() 专门干这个首字母大写的

            
              def q(n):
	""" 实现capitalize()方法"""
    return name.capitalize()


a = 'hello world'
a1 = a.split(" ")
b = list(map(q, a1))
print(b)

  结果是 Hello World

            
          

5. 如何检测字符串中只含有数字?

            
              import re

res = str(input("输入一个字符串:"))# 确保输入是字符串
value = re.findall(r'\d+', res) 
# 返回一个列表

if len(value) == 0:
 # 假如输入都不是数字,那value必然是空列表
    print("字符串不是全数字")
    
elif len(value[0]) == len(res):
 # 捕获到全部输入是数字,
#那么一定是在第一个value[0]的位置,然后长度和输入相同就OK了
    print("字符串全部是数字")
    
else:
    print("字符串不是全数字")

            
          

6. 将字符串"ilovechina"进行反转

            
              #切片法,还可以用 reversed()方法 ,递归,或者其他
	value = "ilovechina"  
	res = value[::-1]
	print(res)

 reversed()方法 
	value = "ilovechina"
	res = reversed(value)
	print(res)
	 #这里的返回值是一个地址,原因是reversed返回的是一个迭代器
	 #print(”“.join(res)) 就可以把结果显示出来了

            
          

一个函数的输出是print(xxx),把print(xxx)换成 yeild xxx 就变成了生成器函数。结果是一个迭代器,迭代器是一个变量,就是xxx这个变量叫迭代器。效果就是节约内存。

7. Python 中的字符串格式化方式你知道哪些?

            
              百分号%
format

            
          

8. 有一个字符串开头和末尾都有空格,比如“ adabdw ”,要求写一个函数把这个字符串的前后空格都去掉。

            
              str = ' adabdw '
newstr = str.split(' ')
print(newstr)
print(newstr[1])
结果
['', 'adabdw', '']
adabdw

            
          

9. 获取字符串”123456“最后的两个字符。

            
              str = '123456'
ns = str.split('4')
print(ns[1])
结果 56

            
          

10. 一个编码为 GBK 的字符串 S,要将其转成 UTF-8 编码的字符串,应如何操作?

            
              UTF-8=>GBK
import sys
print(sys.getdefaultencoding())
str = "s"                   #默认是utf-8
str_gbk = str.encode("gbk")     #utf-8转成gbk
print(str_gbk)
print(str.encode())
结果
utf-8
b'\xc4\xe3\xb9\xfe'
b'\xe4\xbd\xa0\xe5\x93\x88'

            
          
  1. s=“info:xiaoZhang 33 shandong”,用正则切分字符串输出[‘info’, ‘xiaoZhang’, ‘33’, ‘shandong’]
            
              import re
list = []
s = "info:xiaoZhang 33 shandong"
for i in range(1,5):
    res = re.match('(\w+):(\w+)\s(\d+)\s(\w+)', s)
    ress = res.group(i)
    list.append(ress)
print(list)
结果['info', 'xiaoZhang', '33', 'shandong']
这里说一下group,他是单独取正则表达式括号里的值,然后range是1-5,不是0-5,原因是group是1开始的,写0-5会多加一个变量S
我写的是参考答案

            
          

12. 已知 AList = [1,2,3,1,2],对 AList 列表元素去重,写出具体过程。

            
              不看过程写法
AList = [1,2,3,1,2]
print(set(AList))
结果{1, 2, 3}      变成集合了

AList = [1,2,3,1,2]
BList = []
for i in AList:
    a1 = i
    if a1 not in BList:
        BList.append(a1)
print(BList)
结果[1, 2, 3]

            
          

13.如何实现 “1,2,3” 变成 [“1”,“2”,“3”]

            
              a = list("1,2,3")
b = []
for i in range(3):
    b.append(a[i * 2])
print(b)
结果 ['1', '2', '3']

            
          

14. 给定两个 list,A 和 B,找出相同元素和不同元素

            
              A = [1, 6, 8, 9, "iii", 95]
B = [6, 85, 64]
C = []  不同值放这里
D = []  相同值放这里
for i in A:
    for m in B:
        if i == m:
            D.append(i)
print(D)
  结果  相同值  [6]
  
new_c = A+B
a = list(set(new_c))
for i in a:
    if i not in D:
        C.append(i)
print(C)
结果   不同值  [64, 1, 'iii', 8, 9, 85, 95]

            
          

15. [[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]

            
              a = [[1,2],[3,4],[5,6]]
for x in a:
    for y in x:
        print(y)
  来大佬教一下,一行我也不会,
  list = [lambda x,y:x for x in a for y in x]
  然后输出结果是
  [
              
                
                  .
                  
                     at 0x0000020287E5CE18>, 
                    
                      
                        .
                        
                           at 0x0000020287E612F0>, 
                          
                            
                              .
                              
                                 at 0x0000020287E61378>, 
                                
                                  
                                    .
                                    
                                       at 0x0000020287E61400>, 
                                      
                                        
                                          .
                                          
                                             at 0x0000020287E61488>, 
                                            
                                              
                                                .
                                                
                                                   at 0x0000020287E61510>]
 怎么整啊求留言!!!!!!!!!!!!!

                                                
                                              
                                            
                                          
                                        
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
                
              
            
          

16. 合并列表[1,5,7,9]和[2,2,6,8]

            
              a = [1,5,7,9]
b = [2,2,6,8]
c = a+b
print(c)
结果   

              
                
[1, 5, 7, 9, 2, 2, 6, 8]


              
            
          

17. 如何打乱一个列表的元素?

            
              import random
x = [i for i in range(10)]
print(x)
random.shuffle(x)
print(x)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 2, 4, 7, 5, 8, 6, 1, 0, 3]
这个我也是百度的,知识盲区,绝了

            
          

18. 字典操作中 del 和 pop 有什么区别
del删除整个字典,变量都给你删了
pop指定删除给键的那个数据
a = {‘a’:‘1’,‘b’:‘2’}
print(a.pop(‘a’))
print(a)
结果
1
{‘b’: ‘2’}

del a
print(a)
结果直接报错说 a不是定义变量 NameError: name ‘a’ is not defined


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论