python学习2019/05/06

‘’’
this is a module
‘’’

import re
from urllib import request
#断点调试 F5
class Spider():
‘’’
this is a class
‘’’
url = ‘https://live.ixigua.com/category/1/114/
root_patten = ‘

[\S\s]*?

def __fetch_content(self):   #私有方法
   '''
   '''
    r = request.urlopen(Spider.url)
    #bytes
    htmls = r.read()
    htmls = str(htmls,encoding = 'utf-8') 
    a = 1
    return htmls                          

def __analysis(self,htmls):
    root_html = re.findall(Spider.root_patten,htmls)
    anchor = []
    for html in root_html:
        name = re.findall(Spider,name_pattern,html)
        number = re.findall(Spider.number_pattern,html)
        anchor = {'name':name,'number':number}
        anchors.append(anchor)
    return anchors

def __refine(self,anchors):
    l = lambda anchor:{
        'name':anchor['name'][0].strip(),
        'number':anchor['number'][0]
        }
    return map(l,anchors) 

def __sort(self,anchors):
    #filter
    anchors = sorted(anchors,key=sefl.__sort_seed,reverse=True)
    return anchors

def __sort_seed(self,anchor):
    r = re.findall('\d*',anchor['number'])
    number = float(r[0])
    return anchor['number']
    if '万'in anchor['number']:
        number *=10000 
    return number

def __show(self,anchors):
    for rank in range(0,len(anchors)):
        print('rank '+ str(rank + 1)
        +':'+anchors[rank]['name']
        +'    '+anchors[rank]['number'])

def go(self):
    htmls = self.__fetch_content()
    anchors = self.__analysis(htmls)
    anchors = list(self.__refine(anchors))
    anchors = self.__sort(anchors)
    self.__show(anchors)

spider = Spider()
spider.go()

#因熊猫TV关闭,代码爆炸?

昨天的完结篇。。。虽然用不了。。。

eval 字符串转数值表达式

可以去括号内最外侧单双引号?

eval(expression[, globals[, locals]])

参数
expression – 表达式。
globals – 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals – 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
返回值

实例
以下展示了使用 eval() 方法的实例:

x = 7
eval( ‘3 * x’ )
21
eval(‘pow(2,2)’)
4
eval(‘2 + 2’)
4
n=81
eval(“n + 4”)
85
如果 eval (a[0:-1])内字符是‘12.3’
那么输出的是数字12.3

format 格式化函数

实例

“{} {}”.format(“hello”, “world”) # 不设置指定位置,按默认顺序
‘hello world’

“{0} {1}”.format(“hello”, “world”) # 设置指定位置
‘hello world’

“{1} {0} {1}”.format(“hello”, “world”) # 设置指定位置
‘world hello world’

实例
#!/usr/bin/python
#-- coding: UTF-8 --

print(“网站名:{name}, 地址 {url}”.format(name=“菜鸟教程”, url=“www.runoob.com”))

#通过字典设置参数
site = {“name”: “菜鸟教程”, “url”: “www.runoob.com”}
print(“网站名:{name}, 地址 {url}”.format(**site))

#通过列表索引设置参数
my_list = [‘菜鸟教程’, ‘www.runoob.com’]
print(“网站名:{0[0]}, 地址 {0[1]}”.format(my_list)) # “0” 是必须的

也可以向 str.format() 传入对象:

实例
#!/usr/bin/python
#-- coding: UTF-8 --

class AssignValue(object):
def init(self, value):
self.value = value
my_value = AssignValue(6)
print(‘value 为: {0.value}’.format(my_value)) # “0” 是可选的

数字格式化
下表展示了 str.format() 格式化数字的多种方法:

print("{:.2f}".format(3.1415926));
3.14

^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

  • 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格

b、d、o、x 分别是二进制、十进制、八进制、十六进制。

此外我们可以使用大括号 {} 来转义大括号,如下实例:

实例
#!/usr/bin/python
#-- coding: UTF-8 --

print ("{} 对应的位置是 {{0}}".format(“runoob”))

end=

TempLate = ‘零一二三四五六七八九’
TempNumber = input()
for number in TempNumber:
print(TempLate[eval(number)],end=’’)

print()中增加end=""参数表示输出后不增加换行,多个print()可以连续输出。

温度转换

TempStr = input(‘请输入带有符号的温度值:’)
if TempStr[-1] in [‘F’,‘f’]:
C = (eval(TempStr[0:-1]) - 32)/1.8
print(‘转换后的温度是{:.2f}C’.format©)
elif TempStr[-1] in [‘C’,‘c’]:
F = 1.8*eval(TempStr[0:-1]) + 32
print(‘转换后的温度是{:.2f}F’.format(F))
else:
print(‘输入格式错误。’)

TempLate = ‘零一二三四五六七八九’
TempNumber = input()
for number in TempNumber:
print(TempLate[eval(number)],end=’’)

TempStr = input()
if TempStr[0] in (‘F’,‘f’):
C = (eval(TempStr[1:])-32)/1.8
print(‘C’’{:.2f}’.format©)
elif TempStr[0] in (‘C’,‘c’):
F = eval(TempStr[1:])*1.8+32
print(‘F’’{:.2f}’.format(F))
else:
print()

TempMoney = input()
if TempMoney[:3] == ‘USD’:
print(‘RMB{:.2f}’.format(eval(TempMoney[3:])*6.78))
elif TempMoney[:3] == ‘RMB’:
print(‘USD{:.2f}’.format(eval(TempMoney[3:])/6.78))
else:
print()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值