用python玩转数据|数据获取与表示

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/darlingwood2013/article/details/61192133

文件读写

file_obj=open(filename,mode='r',buffering=-1)
#其中mode为可选参数,默认值为r
#buffering为可选参数,默认值为-1
#(0代表不缓冲,>=1的值表示缓冲一行或指定缓冲区的大小)
#可以以文本文件方式或二进制文件方式打开
#open()函数返回一个文件(file)对象,文件对象可迭代
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

  • file_obj.write(str) :向文件中写字符串
  • file_obj.read() :读文件直到文件结束,返回字符串
  • file_obj.read(size):从文件读size个字节数据,返回字符串

  • python从读文件中读取行的时候不删除换行符

将文件中的字符串读出,加上序号然后写进去。

f = open(r'D:\program\python\nju_python\firstpro.txt','r')
line = f.readlines()
#此处line的数据类型是list
for i in range(0,len(line)):
    line[i]=str(i+1)+'.'+line[i]
f.close()
f1 = open(r'D:\program\python\nju_python\firstpro.txt','w')
#这里用write()函数就不行,因为其只接受str参数
f1.writelines(line)
f1.close()
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

小程序

#创建文件并写入歌词
f = open (r'D:\program\python\nju_python\Blowing in the wind.txt','w')
f.write('How many roads must a man walk down\nBefore they call him a man\n\
How many seas must a white dove sail\nBefore she sleeps in the sand\n\
How many times must the cannon balls fly\nBefore they\'re forever banned\n\
The answer my friend is blowing in the wind\nThe answer is blowing in the wind\n')
f.close()
#插入歌名
f1 = open (r'D:\program\python\nju_python\Blowing in the wind.txt','r+')
sname='Blowin’ in the wind\n'
#print(f1.read())
s=sname+f1.read()
#print(s)
#前面read()完之后文件指针在文件末尾,记得seek回来
f1.seek(0,0)
f1.write(s)
f1.close()
#插入歌手及创作年份等
f2 = open (r'D:\program\python\nju_python\Blowing in the wind.txt','r+')
content = f2.read()
content_add = 'Bob Dylan'
pos = content.find('\nHow many roads must a man walk down')
if pos!=-1:
    content = content[:pos] + '-'+content_add + content[pos:]
    f2.seek(0,0)
    f2.write(content)
f2.seek(0,2)
f2.write('1962 by Warner Bros. Inc.')
f2.seek(0,0)
print(f2.read())
f2.close()
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

从网络获取数据

import urllib.request
r = urllib.request.urlopen("https://www.baidu.com/") 
html = r.read()
print(html)
 
 
  • 1
  • 2
  • 3
  • 4

对象身份比较:

  • is
  • is not

在 python2中,<>表示!=的意思,在python中已不再支持<>。

序列:字符串、列表、元组

>>> week=['MON','TUE','WED','THU','FRI','SAT','SUN']
>>> print(week[::-3])
['SUN', 'THU', 'MON']
>>> print(week[::-2])
['SUN', 'FRI', 'WED', 'MON']
>>> print(week[::-1])
['SUN', 'SAT', 'FRI', 'THU', 'WED', 'TUE', 'MON']
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

  • list()将str转换为列表
  • tuple()将str转换为元组

格式输出

aStr = 'What do you think of this saying "No pain,No gain"?'
#lindex = aStr.index('\"',0,len(aStr))
#rindex = aStr.rindex('\"',0,len(aStr))
#tempStr = aStr[lindex+1:rindex]
#上面三句可由下面一句代替
#表示用"将字符串分为三部分,我们需要第二部分,即下标为1的部分
tempstr = aStr.split('\"')[1]
if tempstr.istitle():
    print('It is title format.')
else:
    print('It is not title format.')
print(tempstr.title())
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

列表
同一个列表中可以包含不同的数据类型。
列表是可变的。

eg b = [1,2,'p',3.5] #包涵整形、字符串和实型
 
 
  • 1
week = ['MON','TUE','WED','THU','FRI']
weekend = ['SAT','SUN']
week.extend(weekend)
#enumerate()序号默认从0开始
for i,j in enumerate(week):
    print(i+1,j)

输出:
1 MON
2 TUE
3 WED
4 THU
5 FRI
6 SAT
7 SUN

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

动态创建列表!厉害厉害!

元组

  • 元组是不可变的。元组不支持元素赋值。
  • 元组使用场合:
    • 在映射类型中当做键使用
    • 函数的特殊类型参数
    • 作为内建函数的返回值

  • sorted()函数只排序,不改变原来序列;
  • .sort()函数排序,改变原序列。
  • 所以对元组可以使用sorted()函数不能使用.sort()函数。

元组使用场合:

单元测验

>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[0: -1]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> numbers[0::3]
[1, 4, 7, 10]
>>> numbers[-2:]
[9, 10]
>>> numbers[0: 2]
[1, 2]
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

编程题
第一题
统计字符串中各个字母出现次数,不区分大小写:

#法一:
def countchar(str):
    charmap=[]
    #初始化
    #只有添加进去元素之后才能用下标访问
    #不能通过下标添加元素
    for i in range(26):
        charmap.append(0)
    str=str.upper()
    for c in str:
        if c.isalpha():
            charmap[ord(c)-65]+=1

    return charmap
if __name__ == "__main__":
    str = input()
    print(countchar(str))

#法二:
def countchar(str):
    #字典
    charmap={}
    #初始化
    #chr(i)函数表示返回整数i对应的ASCII字符。与ord()作用相反
    #参数i是取值范围[0, 255]之间的正数
    for i in range(26):
        charmap[chr(i+65)]=0
    str=str.upper()
    for c in str:
        if ord('A')<=ord(c)<=ord('Z'):
            charmap[c]+=1

    return [charmap[chr(i+65)] for i in range(26)]
if __name__ == "__main__":
    str = input()
    print(countchar(str))
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

第二题
获取多个网页内容并打印在文件里

import urllib.request
for i in range(0,10):
    aStr=str(i)
    print(aStr)
    url_str='http://tieba.baidu.com/p/100000000'+aStr
    r = urllib.request.urlopen(url_str) 
    html = r.read()
    url_str=r'D:\program\python\nju_python\100000000'+aStr+'.html'
    f = open(url_str,'w')
    f.write(html)
#遇到很神奇的错误,不能解决,把错误贴在下面
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据来源:中经数据库 主要指标110多个(全部都是纯粹的 市辖区 指标),大致是: GDP GDP增速 第一产业增加值占GDP比重 第二产业增加值占GDP比重 第三产业增加值占GDP比重 人均GDP 社会消费品零售总额 固定资产投资(不含农户) 新设外商投资企业数_外商直接投资 实际利用外资金额(美元) 一般公共预算收入 一般公共预算支出 一般公共预算支出_教育 一般公共预算支出_科学技术 金融机构人民币各项存款余额_个人储蓄存款 金融机构人民币各项存款余额 金融机构人民币各项贷款余额 规模以上工业企业单位数 规模以上工业企业单位数_内资企业 规模以上工业企业单位数_港澳台商投资企业 规模以上工业企业单位数_外商投资企业 规模以上工业总产值 规模以上工业总产值_内资企业 规模以上工业总产值_港澳台商投资企业 规模以上工业总产值_外商投资企业 规模以上工业企业流动资产合计 规模以上工业企业固定资产合计 规模以上工业企业利润总额 规模以上工业企业应交增值税 规模以上工业企业主营业务税金及附加 户籍人口数 年均户籍人口数 户籍人口自然增长率 第一产业就业人员占全部城镇单位就业人员比重 第二产业就业人员占全部城镇单位就业人员比重 第三产业就业人员占全部城镇单位就业人员比重 城镇非私营单位就业人员数 城镇非私营单位就业人员数_第一产业 城镇非私营单位就业人员数_第二产业 城镇非私营单位就业人员数_第三产业 城镇非私营单位就业人员数_农、林、牧、渔业 城镇非私营单位就业人员数_采矿业 城镇非私营单位就业人员数_制造业 城镇非私营单位就业人员数_电力、热力、燃气及水生产和供应业 城镇非私营单位就业人员数_建筑业 城镇非私营单位就业人员数_批发和零售业 城镇非私营单位就业人员数_交通运输、仓储和邮政业 城镇非私营单位就业人员数_住宿和餐饮业 城镇非私营单位就业人员数_信息传输、软件和信息技术服务业 城镇非私营单位就业人员数_金融业 城镇非私营单位就业人员数_房地产业 城镇非私营单位就业人员数_租赁和商务服务业 城镇非私营单位就业人员数_科学研究和技术服务业 城镇非私营单位就业人员数_水利、环境和公共设施管理业 城镇非私营单位就业人员数_居民服务、修理和其他服务业 城镇非私营单位就业人员数_教育 城镇非私营单位就业人员数_卫生和社会工作 城镇非私营单位就业人员数_文化、体育和娱乐业 城镇非私营单位就业人员数_公共管理、社会保障和社会组织 城镇非私营单位在岗职工平均人数 城镇就业人员数_私营企业和个体 城镇非私营单位在岗职工工资总额 城镇非私营单位在岗职工平均工资 城镇登记失业人员数 建成区面积 建设用地面积 建设用地面积_居住用地 液化石油气供气总量 液化石油气供气总量_居民家庭 人工煤气、天然气供气总量 人工煤气、天然气供气总量_居民家庭 液化石油气用气人口 人工煤气、天然气用气人口 城市公共汽电车运营车辆数 城市出租汽车运营车辆数 城市公共汽电车客运总量 道路面积 排水管道长度 建成区绿化覆盖面积 建成区绿化覆盖率 绿地面积 公园绿地面积 维护建设资金支出 土地面积 生活用水供水量 供水总量 全社会用电量 城乡居民生活用电量 工业生产用电量 房地产开发投资 房地产开发投资_住宅 限额以上批发和零售业法人单位数 限额以上批发和零售业商品销售总额 普通中学学校数 中等职业教育学校数 普通小学学校数 普通高等学校专任教师数 普通中学专任教师数 中等职业教育专任教师数 普通小学专任教师数 普通高等学校在校生数 普通中学在校生数 中等职业教育在校生数 普通小学在校生数 电视节目综合人口覆盖率 公共图书馆总藏量_图书 医疗卫生机构数_医院和卫生院 卫生人员数_执业(助理)医师 医疗卫生机构床位数_医院和卫生院 城镇职工基本养老保险参保人数 职工基本医疗保险参保人数 失业保险参保人数

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值