python里面一些简单的函数的使用注意

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_26566137/article/details/82560825
1)sum函数:
print(sum[1,2])
报错:TypeError: 'builtin_function_or_method' object is not subscriptable;
更正写法:print(sum([1,2]))
很多时候,报上述错误,就是因为在函数与输入对象之间应该输入()而没有输入;
或者本来应该是()而写成[];
例如:
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    s1 = sm()
  File "D:\github.com_henry199101\6.00.1x_Files\Week_6\Problem_Set_6\caogao\qwer.py", line 8, in sm
    dict[key] = values[keys.index[key] + 3]
TypeError: 'builtin_function_or_method' object is not subscriptable

内建函数或者方法对象不能subscriptable

错误在index[key],原因是:index后应当是()
参考:https://blog.csdn.net/qq_33528613/article/details/72807132?locationNum=4&fps=1

练习代码的地方:(1)https://www.lintcode.com/problem/a-b-problem/description
(2)https://www.geeksforgeeks.org/juniper-interview-experienceon-campus-for-internship/

列表里面写循环实现功能:
# def openOrSenior(data):
#     return ['Senior' if (i[0] > 55 or i[0] == 55) and i[1] > 7 else 'Open' for i in data]
# #对于要返回两种情况的,可以将循环写在最后面,形如:“结果1 if... 结果2 else... for i in data”
# print(openOrSenior([[18, 20], [45, 2], [61, 12], [37, 6], [21, 21], [78, 9]]))

(2)大数据清理:

对于输入字段,抛出异常的,往往会在函数里面加上try...except...,try里面既可以写if...elif...else的结构;但是最好的情况下,是找到它是什么异常,然后的except里面将日志打印出来;
数据清理的时候遇到某些字段为中文字符的时候,显示乱码:
主要检查相关函数引用的对象以及本身脚本前面是否有import sys,sys.set...的那#-*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

注意的是,保存的时候如果设置了quote_all = '"',那spark读取的时候,需带上quote='"';同时,即便上述设置都有了,在写函数的时候,如果不注意返回值格式,通常中文字符需要加u,就会乱码,为了更保险,在保存csv的设置中,令encoding = 'utf-8';
注意,从hdfs上读取一个文件的某字段时候,要将中文字符解析出来,通常需要先解码一下,先判断其是不是unicode,如果不是,用utf-8解码,返回中文字符带上u;同时,注意spark.sql中,where某一个字段的时候,注意where a<b会把a为空的过滤掉,因此最保险的还是where a<b and a is null;注意在sql=语句中如果写成where a = '失信' 就可以了,如果加上u反而会报错;还有判断最大值,如果表已经是排序的最小元子行,直接max最大就可以了,不用分两步来做;


**为什么在首行定义了utf-8,还要用sys再set一次?
参考:http://in355hz.iteye.com/blog/1860787
陷阱一:在进行同时包含 str 与 unicode 的运算时,Python 一律都把 str 转换成 unicode 再运算,当然,运算结果也都是 unicode。

由于 Python 事先并不知道 str 的编码,它只能使用 sys.getdefaultencoding() 编码去 decode。在我的印象里,sys.getdefaultencoding() 的值总是 ‘ascii’ ——显然,如果需要转换的 str 有中文,一定会出现错误。

猜你喜欢

转载自blog.csdn.net/sinat_26566137/article/details/82560825
今日推荐