python分析txt文件_用python做数据分析1|python中各种数据类型及txt文件操作

今天是4.25号。

很快四月也走到了尾声,学期即将过半,我还没有找到理想的实习。不过投出去的文章已经有一篇有了好的结果,另外四篇也期待和祈祷都被录用~~

python爬虫的学习自己大抵学了60%吧,但自己最近在想自己学习python最终目的是想用python来进行数据分析的,爬虫只算是获取数据的第一步,那么接下来是不是应该多学学numpy,pandas以及其他数据分析的库。所以最近还会补充点python中的基础知识,为后面的学习作好准备。

第一部分 数据类型相关知识

能够进行迭代的数据类型有:字符串,列表,字典。

1.数字类型

int(),float()

运算符:%(取余),//(除后取整,例如a=3.8//2 ,结果为1.0)

逻辑运算符:and, or, not

round()作用是四舍五入

break是跳出所在的while或者for循环

2.字符串类型

常用函数:len(),str(),可以通过“+”和“*”来连接;s.replace('a','b')即将字符串s中的 所有a字符用b字符来替换。

0e4d0d4547a1?nomobile=yes

常用操作方法.png

如何格式化字符串:

在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:

'Hello, %s' % 'world'

'Hello, world'

'Hi, %s, you have $%d.' % ('Michael', 1000000)

'Hi, Michael, you have $1000000.'

你可能猜到了,%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。

常见的占位符有:

%d 整数

%f 浮点数

%s 字符串

%x 十六进制整数

3.列表类型

0e4d0d4547a1?nomobile=yes

列表操作1.png

0e4d0d4547a1?nomobile=yes

列表操作2.png

4.字典型数据

(1)访问字典中的一项的值:

dictionaryName[key],返回键key对应的值value。

(2)删除字典中的一项:

del dictionaryName[key]

(3)字典的遍历:

设a为一个字典型数据,则

for i in a.keys(),values(),items()经常用到。

(4)判断一个键key知否在字典中:

in 或者not in

eg:'city' in infor.keys()

其他操作方法:

0e4d0d4547a1?nomobile=yes

字典的操作.png

5.集合(set)

若s='sunset',a=set(s)

得到a:set(['s','u','n','s','e','t'])

两个集合之间的操作有多种,主要如下:

0e4d0d4547a1?nomobile=yes

四种运算.PNG

0e4d0d4547a1?nomobile=yes

集合运算.png

第二部分 文件操作相关知识

字符串在python中默认以unicode编码保存的,常见的编码方式有:

(1)ASCII编码

(2)UTF-8编码

(3)GBK编码

(4)Unicode编码

(1)、(2)、(3)通过decode()将字符串解码为unicode,通过encode()将unicode编码字符串转为其他三种编码,

文件一般分为文本文件和二进制文件(除文本以外的文件)

操作文件一般包括:打开文件,(读取、写入、定位、追加、计算)文件,关闭文件。

(1)打开文件

用法f=open(<'xxx文件路径'>,),其中f是一个变量

0e4d0d4547a1?nomobile=yes

Paste_Image.png

(2)文件读取、写入、定位

a)读取文件用法f.read(),f.readline(),f.readlines()三者只是返回值不同,第一个返回的是整个文本的字符串;第二个返回一行的字符串;第三个返回整个文本的列表,其中一行字符串为一个元素。

b)写入文件的用法,使用时需要传入参数file.write(a),file.writelines(a),二者区别在于第一个是写入字符串a到文件file中;第二个是写入列表a到文件file中。

0e4d0d4547a1?nomobile=yes

Paste_Image.png

0e4d0d4547a1?nomobile=yes

Paste_Image.png

完整例子如:

file=open('C:\Users\guohuaiqi\Desktop\1.txt','w') #打开模式要用''括起来

file.writelines(a)或者file.readlines()

file.close

最后贴上一个用于词频统计(仅仅针对英文文章)的代码:

步骤为:

(1)用爬虫获取内容,用空格''replace文章中出现的其他符号,然后保存为text格式文件;

(2)定义一个函数,先用split('')对句子进行分割,然后对一行的单词进行统计;

(3)读取text文件,将每一行句子传入(2)中的函数,执行完毕后,将字典数据转化为list数据然后进行排序。

此外有两点知识新学到如下:

(4)使用如b={}为一个字典数据,可直接用list(b.items())将b转化为列表数据。

(5)使用sorted()函数对列表中元素是cell的数据进行排序

例:student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10)]

那么sorted(student_tuples, key=itemgetter(2), reverse=True)表示对student_tuples列表按元组中的第三个元素age进行排序**,其中reverse(布尔值)参数用来标记排序顺序的,True-递减,False-递增(默认)

(6)打开文件的路径时要么为'C:\Users\guohuaiqi\Desktop\1.txt',也可是r'C:\Users\guohuaiqi\Desktop\1.txt',这样r后的字符串都按字面意思而不进行转义。

__author__ = 'guohuaiqi'

#!/usr/bin/env python

# _*_ coding: utf-8 _*_

import requests

from bs4 import BeautifulSoup

import operator

url='https://hbr.org/2016/04/what-we-can-learn-from-one-of-the-worlds-most-mocked-cars'

a=[]

def get_contents(url):

web_data=requests.get(url)

soup=BeautifulSoup(web_data.text,'lxml')

paragraphs=soup.select('div.article.article-first-row p')

for content in paragraphs:

b=content.get_text().lower()

for ch in b:

if ch in ',().:“”?‘’-':

b=b.replace(ch,'')

b=b.replace('\xa0',' ')

a.append(b)

file=open('C:\\Users\\guohuaiqi\\Desktop\\1.txt','w')

file.writelines(a)

file.close

print('done!!!')

def words_count(line,wordsCount):

words=line.split(' ') #将每一行按空格分割成一个列表

for word in words:

if word in wordsCount.keys(): #应该用wordsCount.keys()而不是wordsCount,否则在计数we时会把包含we的单词如were等计算在内

wordsCount[word]+=1

else:

wordsCount[word]=1

wordsCount={} #wordsCount为一个空字典

def main():

f=open('C:\\Users\\guohuaiqi\\Desktop\\1.txt','r')

for line in f.readlines():

words_count(line,wordsCount)

pairs=list(wordsCount.items()) #会把字典中的键和值转化为一个元组cell,每一个cell作为list的一个元素返回

print(sorted(pairs,key=operator.itemgetter(1),reverse=True))

f.close

if __name__=='__main__':

main()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值