用python玩转数据|数据获取与表示 - Go语言中文社区

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


文件读写

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

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

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

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

f = open(r'D:programpythonnju_pythonfirstpro.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:programpythonnju_pythonfirstpro.txt','w')
#这里用write()函数就不行,因为其只接受str参数
f1.writelines(line)
f1.close()

小程序

#创建文件并写入歌词
f = open (r'D:programpythonnju_pythonBlowing in the wind.txt','w')
f.write('How many roads must a man walk downnBefore they call him a mann
How many seas must a white dove sailnBefore she sleeps in the sandn
How many times must the cannon balls flynBefore they're forever bannedn
The answer my friend is blowing in the windnThe answer is blowing in the windn')
f.close()
#插入歌名
f1 = open (r'D:programpythonnju_pythonBlowing in the wind.txt','r+')
sname='Blowin’ in the windn'
#print(f1.read())
s=sname+f1.read()
#print(s)
#前面read()完之后文件指针在文件末尾,记得seek回来
f1.seek(0,0)
f1.write(s)
f1.close()
#插入歌手及创作年份等
f2 = open (r'D:programpythonnju_pythonBlowing 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()

从网络获取数据

import urllib.request
r = urllib.request.urlopen("https://www.baidu.com/") 
html = r.read()
print(html)

对象身份比较:

  • 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']

  • 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())

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

eg b = [1,2,'p',3.5] #包涵整形、字符串和实型
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

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

元组

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

  • 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]

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

#法一:
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))

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

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:programpythonnju_python100000000'+aStr+'.html'
    f = open(url_str,'w')
    f.write(html)
#遇到很神奇的错误,不能解决,把错误贴在下面

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/darlingwood2013/article/details/61192133
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-20 10:52:28
  • 阅读 ( 606 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢