www.python.com_3-【python13_day2】

本节内容

列表、元组操作

字符串操作

字典操作

集合操作

文件操作

字符编码与转码

一,列表操作

示例列表:

names = ['wuzb',"Tenglan",'Eric']

1,下标取值

下标从0开始,第n个值的下标是n-1。

可以倒着取值,比如:name[-1]

>>> names[0]

'wuzb'

>>> names[2]

'Eric'

>>> names[-1]

'Eric'

>>> names[-2] #还可以倒着取

'Tenglan'

2,切片

下标切片,取头舍尾。比如name[1:8],只会取下标是1-7的值。

如果从头开始可以不用写下标: name[:6]

如果想要取到最后一个可以:name[2:]

还可以隔几个取值:name[2::2]

表示:每隔2个值取一个值,下标从2开始到结束

>>> names = ["Wuzb","Tenglan","Eric","Rain","Tom","Amy"]

>>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4

['Tenglan', 'Eric', 'Rain']

>>> names[1:-1] #取下标1至-1的值,不包括-1

['Tenglan', 'Eric', 'Rain', 'Tom']

>>> names[0:3]

['Alex', 'Tenglan', 'Eric']

>>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样

['Alex', 'Tenglan', 'Eric']

>>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写

['Rain', 'Tom', 'Amy']

>>> names[3:-1] #这样-1就不会被包含了

['Rain', 'Tom']

>>> names[0::2] #后面的2是代表,每隔一个元素,就取一个

['Alex', 'Eric', 'Tom']

>>> names[::2] #和上句效果一样

['Alex', 'Eric', 'Tom']

3,追加

方法:name.append(“值”)

自动会在列表最后追加

>>> names

['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']

>>> names.append("我是新来的")

>>> names

['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

4,插入

方法:name.insert(2,"alex")

代表在name中下标为2的值后面插入一个值为alex的元素

>>> names

['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

>>> names.insert(2,"强行从Eric前面插入")

>>> names

['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

5,修改

方法:name[2] ="alex"

直接去赋值

>>> names

['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']

>>> names[2] = "该换人了"

>>> names

['Alex', 'Tenglan', '该换人了', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']

6,删除

方法:name.remove["alex"] 删除指定的元素

name.pop() 删除最后的元素

del name[2] 删除指定下标的元素

>>> del names[4]

>>> names

['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

>>>

>>> names.remove("Eric") #删除指定元素

>>> names

['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新来的']

>>> names.pop() #删除列表最后一个值

'我是新来的'

>>> names

['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']

7,扩展

方法: name.extend(b)

扩展列表name,将列表b加入到列表name中。

>>> names

['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']

>>> b = [1,2,3]

>>> names.extend(b)

>>> names

['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]

8,拷贝

方法:names=name.copy()

代表将name列表复制一份给names。

当name改变的时候,name是不会变的

>>> names

['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]

>>> name_copy = names.copy()

>>> name_copy

['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]

>>> name

[1, 2, 3, 4, 5, 4, 6]

>>> names=name.copy()

>>> names

[1, 2, 3, 4, 5, 4, 6]

>>> name.append(8)

>>> name

[1, 2, 3, 4, 5, 4, 6, 8]

>>> names

[1, 2, 3, 4, 5, 4, 6] #copy之后,name变了,但是names是不会变的

9,统计

方法:name.count("alex")

>>> names

['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]

>>> names.count("Amy")

2

10,排序&反转

方法:name.sort() 3.0不同的数据类型不能放在一起排序。

反转 name.reverse()

3.0里不同数据类型不能放在一起排序了,python2可以。

>>> names=[1,2,3,5,3,6,6,8,95,87]

>>> names.sort()

>>> names

[1, 2, 3, 3, 5, 6, 6, 8, 87, 95]

>>> names.reverse()

>>> names

[95, 87, 8, 6, 6, 5, 3, 3, 2, 1]

11,获取下标

方法:name.index("Amy") #只返回找到的第一个下标

>>> names

['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']

>>> names.index("Amy")

2 #只返回找到的第一个下标

二,元组操作

元组

元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。

它只有2个方法,一个是count,一个是index,完毕

方法1:name.count("alex")

方法2:name.index("wzb")

>>> name=("alex","wzb","liyuan")

>>> name[1]

'wzb'

>>> name[1:]

('wzb', 'liyuan')

>>> name.count("wzb")

1

>>> name.index("wzb")

1

三、字符串操作

3.1 基本字符串的操作(字符串是不可变的,分片赋值是不合法的)

标准的序列操作:索引、分片、乘法、判断成员资格、求长度、取最大最小值

3.1.1 索引

>>> name="brucewu"

>>> name[4]

'e'

示例:根据给定的年月日,以数字形式打印出日期

月份和日期结尾字典

months =['January','February','March','April','May','June','July','August','September',

'October','November','December']

endings = ['st','nd','rd'] + 17*['th']\

+ ['st','nd','rd'] + 7*['th']\

+ ['st']

#输入年月日

year = input('year:')

month = input('month(1-12):')

day = input('day(1-31:')

#月份和日期类型转换

month_number = int(month)

day_number = int(day)

#月和日的取得,使用列表索引

month_name = months[month_number - 1]

ordinal = day + endings[day_number - 1]

year:2017

month(1-12):12

day(1-31:22

December 22nd.2017

3.1.2 分片

>>> tag="http://www.liaoxuefeng.com/"

>>> tag[7:]

'www.liaoxuefeng.com/'

>>> tag[7:-1]

'www.liaoxuefeng.com'

示例:分片示例

url = input("Please input url:")

domain = url[4:-4]

print("Domain name:"+domain)

Please input url:www.python.com

Domain name:python

3.1.3 序列相加(同类型的才能相加)

>>> "hello"+"world"

'helloworld'

>>> "hello"+2

Traceback (most recent call last):

File "", line 1, in

TypeError: Can't convert 'int' object to str implicitly

3.1.4 乘法

>>> name="wu"

>>> names=name*5

>>> names

'wuwuwuwuwu'

>>> []*100

[]

3.1.5 成员资格(in)

>>> url="www.python.org"

>>> "python" in url

True

3.1.6 长度,最大和最小值(len、max、min)

>>> url="www.python.org"

>>> len(url)

14

>>> max(url)

'y'

>>> min(url)

'.'

3.2 字符串的格式化

格式化操作符的右侧数可以是任意类型,如果是元组或者映射类型(如字典)。那么字符串的格式化将会有所不同。

如果操作数是元组,其中每个元素都会被单独格式化,每个值都需要一个对应的转换说明。

基本的转换说明符。注意,这些项的顺序至关重要。

(1)%字符:转换说明符开始。

(2)转换标志(可选):- 表示左对齐;+表示要在转换值之前要加正负号;""(空白字符)表示正数前要保留空格;0 表示转换值若位数不够则用0填充。

(3)最小字段宽度(可选):转换后字符串至少应具有的指定宽度。如果是,宽度值从元组中读出。

(4)点(.)后跟精度值(可选):如果是实数,精度指的是出现在小数点后的位数。如果是字符串,该数字表示最大字段宽度。如果是,精度从元组中读出。

(5)转换类型:

格式符为真实值预留位置,并控制显示的格式。格式符可以包含有一个类型码,用以控制显示的类型,如下:

%s

字符串 (采用str()的显示)

%r

字符串 (采用repr()的显示)

%c

单个字符

%b

二进制整数

%d

十进制整数

%i

十进制整数

%o

八进制整数

%x

十六进制整数

%e

指数 (基底写为e)

%E

指数 (基底写为E)

%f

浮点数

%F

浮点数,与上相同

%g

指数(e)或浮点数 (根据显示长度)

%G

指数(E)或浮点数 (根据显示长度)

%%

字符"%"

3.2.1 简单转换

>>> "price of eggs:$%+d" %42

'price of eggs:$+42'

>>> "price of eggs:$%.5f" %42.98979797

'price of eggs:$42.98980'

宽度按设置为10

>>> from math import pi

>>> "%10.5f" % pi

' 3.14159'

3.2.2使用对齐和0填充

>>> "%-10.5f" % pi

'3.14159 '

>>> "%+10.5f " % pi

' +3.14159 '

>>> "%+10.5f " % -pi

' -3.14159 '

3.3 字符串的方法

3.3.1 查找字串:Find

返回字串所在位置最左端的索引,没有找到返回-1

url = "www.python.com"

print(url.find("www"))

print(url.find("python"))

print(url.find("sb"))

#长度超出也返回-1

print(url.find("www.python.comss"))

-----------------------------------

0

4

-1

-1

3.3.2 连接序列中元素:join(split的逆向方法)

注意:连接元素必须是字符串

seq = ["1","2","3","4","5",]

sep = "+"

result = sep.join(seq)

print(result)

----------------------------

1+2+3+4+5

3.3.3 转换小写:lower

使用场景:匹配字符串的时候区分大小写,如果想做到简洁,可以把字符串全部转换为小写来匹配

url = "WWW.Python.Com"

url_low = url.lower()

print(url_low.find("python"))

-------------------------------

4

3.3.4 替换:replace(查找并且替换)

说明:返回某字符串所有匹配项均被替换的结果

url = "WWW.Python.Com"

print(url.replace("Python","python"))

--------------------------------------

WWW.python.Com

3.3.5 分割字符串:split

说明:将字符串分割成序列

seq = "1+2+3+4+5"

print(seq.split('+'))、

-----------------------

['1', '2', '3', '4', '5']

特别说明:不提供分割符号,默认使用空格

url = "WWW Python Com"

print(url.split())

----------------------

['WWW', 'Python', 'Com']

3.3.6 去两侧空格:strip

说明:不包括内部

url = " WWW Python Com "

print(url.strip())

----------------------

WWW Python Com

指定要去除的两侧符号:

url = " !!!///****WWW &&//*Python Com *!/ "

print(url.strip(' !*/'))

------------------------------

WWW &&//*Python Com

3.3.7 其他重要方法

name.capitalize() 首字母大写

name.casefold() 大写全部变小写

name.center(50,"-") 输出 '---------------------Alex Li----------------------'

name.count('lex') 统计 lex出现次数

name.encode() 将字符串编码成bytes格式

name.endswith("Li") 判断字符串是否以 Li结尾

name.startswith("Li")

name.isdigit("5") #判断是否为数字

name.isnumeric

name.isprintable

name.isspace

name.istitle

name.isupper

name="bruce wu"

if name.startswith("bruce"):

print("yes")

else:

print("no")

---------------------

yes

3.3.8 替换:replace,translate,maketrans

replace:

查找并且替换所有

maketrans:

创建一个替换表

translate:

使用替换表批量处理字符串

intab = "aeiou" #This is the string having actual characters.

outtab = "12345" #This is the string having corresponding mapping character

trantab = str.maketrans(intab, outtab)

str = "this is string example....wow!!!"

print(str.translate(trantab))

---------------------------------

th3s 3s str3ng 2x1mpl2....w4w!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
set user_write_ugi:afs://kunpeng.afs.baidu.com:9902=lbs-huiyan,lbs-huiyan; insert overwrite directory 'afs://kunpeng.afs.baidu.com:9902/user/lbs-huiyan/warehouse/huiyan.db/map_huiyan_mall_userpic/event_type=monthly/event_day={FORWARD_MONTH_END}' using CSV options('compression'='GZIP', sep='\t', escapeQuotes=false) SELECT source.mall_id AS mall_id, COUNT(1) AS total FROM (SELECT cuid, mall_id, mall_name, date_type FROM huiyan_ns.huiyan.map_huiyan_mall_basic_source WHERE event_day = '{FORWARD_MONTH_END}') source JOIN (SELECT cuid, * FROM huiyan_ns.huiyan.map_huiyan_parse_userpic WHERE event_day >= '{FORWARD_7_DAY}' AND event_day <= '{FORWARD_MONTH_END}') userpic ON userpic.cuid = source.cuid GROUP BY source.mall_id, source.mall_name, source.date_type; alter table huiyan_ns.huiyan.map_huiyan_mall_userpic_raw add partition(event_day='{FORWARD_MONTH_END}') location 'afs://kunpeng.afs.baidu.com:9902/user/lbs-huiyan/warehouse/huiyan.db/map_huiyan_mall_flow_userpic_raw/event_day={FORWARD_MONTH_END}'; set user_write_ugi:afs://kunpeng.afs.baidu.com:9902=lbs-huiyan,lbs-huiyan; insert overwrite directory 'afs://kunpeng.afs.baidu.com:9902/user/lbs-huiyan/warehouse/huiyan.db/map_huiyan_mall_userpic/event_type=monthly/event_day={FORWARD_MONTH_END}' using CSV options('compression'='GZIP', sep='\t', escapeQuotes=false) SELECT TRANSFORM(mall_id, ) USING 'python3 mall_userpic_streaming.py' AS(mall_id, ) FROM huiyan_ns.huiyan.map_huiyan_mall_userpic_raw WHERE event_day = '{FORWARD_MONTH_END}' ; alter table huiyan_ns.huiyan.map_huiyan_mall_userpic add partition(event_type='monthly', event_day='{FORWARD_MONTH_END}') location 'afs://kunpeng.afs.baidu.com:9902/user/lbs-huiyan/warehouse/huiyan.db/map_huiyan_mall_userpic/event_type=monthly/event_day=${FORWARD_MONTH_END}'; 将这两段代码合并为一段
07-22
你可以将这两段代码合并为以下形式: ```sql set user_write_ugi:afs://kunpeng.afs.baidu.com:9902=lbs-huiyan,lbs-huiyan; insert overwrite directory 'afs://kunpeng.afs.baidu.com:9902/user/lbs-huiyan/warehouse/huiyan.db/map_huiyan_mall_userpic/event_type=monthly/event_day={FORWARD_MONTH_END}' using CSV options('compression'='GZIP', sep='\t', escapeQuotes=false) SELECT source.mall_id AS mall_id, COUNT(1) AS total FROM (SELECT cuid, mall_id, mall_name, date_type FROM huiyan_ns.huiyan.map_huiyan_mall_basic_source WHERE event_day = '{FORWARD_MONTH_END}') source JOIN (SELECT cuid, * FROM huiyan_ns.huiyan.map_huiyan_parse_userpic WHERE event_day >= '{FORWARD_7_DAY}' AND event_day <= '{FORWARD_MONTH_END}') userpic ON userpic.cuid = source.cuid GROUP BY source.mall_id, source.mall_name, source.date_type; alter table huiyan_ns.huiyan.map_huiyan_mall_userpic_raw add partition(event_day='{FORWARD_MONTH_END}') location 'afs://kunpeng.afs.baidu.com:9902/user/lbs-huiyan/warehouse/huiyan.db/map_huiyan_mall_flow_userpic_raw/event_day={FORWARD_MONTH_END}'; set user_write_ugi:afs://kunpeng.afs.baidu.com:9902=lbs-huiyan,lbs-huiyan; insert overwrite directory 'afs://kunpeng.afs.baidu.com:9902/user/lbs-huiyan/warehouse/huiyan.db/map_huiyan_mall_userpic/event_type=monthly/event_day={FORWARD_MONTH_END}' using CSV options('compression'='GZIP', sep='\t', escapeQuotes=false) SELECT TRANSFORM(mall_id) USING 'python3 mall_userpic_streaming.py' AS (mall_id) FROM huiyan_ns.huiyan.map_huiyan_mall_userpic_raw WHERE event_day = '{FORWARD_MONTH_END}'; alter table huiyan_ns.huiyan.map_huiyan_mall_userpic add partition(event_type='monthly', event_day='{FORWARD_MONTH_END}') location 'afs://kunpeng.afs.baidu.com:9902/user/lbs-huiyan/warehouse/huiyan.db/map_huiyan_mall_userpic/event_type=monthly/event_day=${FORWARD_MONTH_END}'; ``` 请注意,这是将两段代码合并为一段,但我无法保证这段代码的逻辑和语法是否正确。请在使用之前进行适当的检查和测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值