Python基础汇总001_txt文件读写、字典使用等

摘要:
+打开要更新的文件。它通常用于图片等非文本文件。如果文件不存在,请创建一个新文件以进行写入。Ab以二进制格式打开一个文件进行追加。如果文件已经存在,文件指针将放在文件的末尾。也就是说,新内容将写入现有内容。A+打开一个文件进行读取和写入。

1.利用python读取文件

(1)Python引入了with语句来自动帮我们调用close()方法

<1>读取指定路径下的文件

with open('/path/to/file', 'r') as f:
    print(f.read())

<2>写文件

with open('/Users/michael/test.txt', 'w') as f:
    f.write('Hello, world!')

(2)Python 按行读取txt文件,并放入列表中(掌握)

每次只读取和显示一行,适用读取大文件

file = open("../aspect_ner_csv_files/aspect_words.txt","r",encoding="utf-8")
word_list=[]
for line in file:
    word_list.append(line.strip())  #将每一行文件加入到word_list列表中
file.close()
print(word_list)

控制台输出:

Python基础汇总001_txt文件读写、字典使用等第1张

(3)读取txt文件,删除重复行

#读取文件
total_stopwords = open('stopwords_txt/total_stopwords.txt', 'r',encoding="utf-8")
total_stopwords_after_filter = open('stopwords_txt/total_stopwords_after_filter.txt', 'w',encoding="utf-8")
new = []
#计算变量
count_total_stopwords=0
count_total_after_filter=0
#利用for循环读取每一行
#去重
for line in total_stopwords.readlines():
    count_total_stopwords+=1  #行数+1
    if line not in new:  #去重
        count_total_after_filter+=1
        new.append(line)
        total_stopwords_after_filter.writelines(line)

total_stopwords.close()
total_stopwords_after_filter.close()
print(count_total_stopwords)
print(count_total_after_filter)

控制台输出:

Python基础汇总001_txt文件读写、字典使用等第2张

(4)将变量按行写入txt文本中

如果要按行写入,我们只需要再字符串开头或结尾添加换行符' '即可:

f = open('../aspect_ner_csv_files/test_biaozhu_pos.txt', 'a', encoding='utf-8')
f.write('
' + words_bmeso_pos)
f.close()

(5)pandas文件读取数据,写入txt中

从pandas的dataframe中,逐行读取某列的数据,经过分词后,将reviews变量逐行写入

Python open() 函数用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

注意:使用 open() 函数一定要保证关闭文件对象,即调用 close() 函数。

open函数的参数列表:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:

  • file: 必需,文件路径(相对或者绝对路径)。
  • mode: 可选,文件打开模式
  • buffering: 设置缓冲
  • encoding: 一般使用utf8
  • errors: 报错级别
  • newline: 区分换行符
  • closefd: 传入的file参数类型
模式描述
t文本模式 (默认)。
x写模式,新建一个文件,如果该文件已存在则会报错。
b二进制模式。
+打开一个文件进行更新(可读可写)。
U通用换行模式(不推荐)。
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
for index,row in df.iterrows():
    reviews=row['reviews']
    review_split, review_pos, review_split_pos=fenci_and_pos(reviews)
    print(review_split)
    print(review_pos)
    print(review_split_pos)
    df.loc[index,'review_split']=review_split
    df.loc[index,'review_pos']=review_pos
    df.loc[index,'review_split_pos']=review_split_pos
    txt_id=1
    review_split_txt_path='split_result_txt/split_txt_'+str(txt_id)+'.txt'
    f = open(review_split_txt_path, 'a',encoding='utf-8')
    f.write('
' + review_split)
    f.close()
    df.to_csv('hotelreviews50_2129.csv', header=None, index=False)  # header=None指不把列号写入csv当中

2.列表生成式 

li = [i ** 2 for i in range(1,11)]
print(li)

输出:

Python基础汇总001_txt文件读写、字典使用等第3张

 3.Counter

Counter是一个容器对象,主要的作用是用来统计散列对象

from collections import Counter
lists = ['a', 'a', 'b', 5, 6, 7, 5]
a = Counter(lists)
print(a)  # Counter({'a': 2, 5: 2, 'b': 1, 6: 1, 7: 1})
b=a.most_common(2)  #输出是一个集合 [('a', 2), (5, 2)]
print(b)
c=dict(b) #将集合转化为字典
print(c)
# 将上面的过程合并成一句话,其作用就是统计集合中的各个元素出现的次数,取出出现次数最多放入字典中
d=dict(Counter(lists).most_common(2))
print(d)

效果图:

Python基础汇总001_txt文件读写、字典使用等第4张

 4.字典(dict)

(1)items 方法

Python 字典 items() 函数作用:以列表返回可遍历的(键, 值) 元组数组。

dict = {'老大':'15岁',
        '老二':'14岁',
        '老三':'2岁',
        '老四':'在墙上'
        }
print(dict.items())
for key,values in dict.items():
    print(key + '已经' + values + '')

控制台输出:

Python基础汇总001_txt文件读写、字典使用等第5张

(2)获取字典的key列表和value列表

# -*- coding: utf-8 -*-
# 定义一个字典
dic = {'剧情': 11, '犯罪': 10, '动作': 8, '爱情': 3, '喜剧': 2, '冒险': 2, '悬疑': 2, '惊悚': 2, '奇幻': 1}
#通过list将字典中的keys和values转化为列表
keys = list(dic.keys())
values = list(dic.values())
# 结果输出
print("keys列表为:",end='')
print(keys)
print("values列表为:",end='')
print(values)

控制台输出:

Python基础汇总001_txt文件读写、字典使用等第6张

 5.统计列表中各种值数据出现的频次

(1)利用字典自定义函数实现(必须掌握)

def get_counts(sequence):
    counts = {}
    for x in sequence:
        if x in counts:
            counts[x] += 1
        else:
            counts[x] = 1
    return counts

小案例:

list01=[1,1,2,22,3,3,-2,3,-34,1,1,2,2,2,2,22,-2,-2]
dict01={}
for i in list01:
    if i in dict01:
        dict01[i]+=1
    else:
        dict01[i]=1

#对字典按value降序排列
a = sorted(dict01.items(), key=lambda x: x[1], reverse=True)
print(a)

控制台输出:

Python基础汇总001_txt文件读写、字典使用等第7张

(2)dataframe格式的value_counts()

pos_count_series=df['review_pos'].value_counts()  #统计review_pos列中各种值数据出现的频次
print(pos_count_series)
list_pos=pos_count_series.index  #可以将其理解为列表
list_count=pos_count_series.values

控制台输出:

Python基础汇总001_txt文件读写、字典使用等第8张

免责声明:文章转载自《Python基础汇总001_txt文件读写、字典使用等》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇数据库 简单查询 Sql Server 学生表 课程表 选课表货币层次(货币分层)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python基础:搭建开发环境(1)

1.Python语言简介 2.Python环境 Python环境产品存在多个。 2.1 CPython CPython是Python官方提供的。一般情况下提到的Python就是指CPython,CPython是基于C语言编写的。 CPython实现的解释器将源代码编译为字节码(ByteCode),再由虚拟机执行。 2.2 PyPy PyPy是基于Pytho...

centos6 python 安装 sqlite 解决 No module named ‘_sqlite3′

原文连接: http://blog.csdn.net/jaket5219999/article/details/53512071 系统red hat6.7 也即centos6.7 python3.5.2 安装 django 之后 创建project 以及 import sqlite3 都出现  No module named ‘_sqlite3′  >...

python—mysql小结

---恢复内容开始--- 数据库就是一种特殊的文件,里面存了需要的数据 现在主要是关系型数据库学习——RDBMS;还有非关系型 mysql是现在应用最广泛关系数据库 关系型数据库核心元素是数据行(记录);数据列(字段);数据表(数据行的集合);数据库(数据表的集合)。 SQL是结构化查询语言,用来操作关系型数据库的 重点是数据查询语言(DQL),数据操作语...

python装饰器系列(七)

装饰器 利用__call__方法实现单例 所谓单例,是指一个类的实例从始至终只能被创建一次。单例的实现有多种,这里以__call__方法来实现 1 class Single: 2 __instance = None 3 4 def __init__(self,cls): 5 self.cls = cls...

【zabbix监控+python爬虫+shell脚本】 理财对接天天基金网实现相关基金波动邮件/钉钉提醒

前序 刚开始接触理财, 第一次朋友介绍的是[安信证券]这款app, 看了几天, 以每笔500的价格入手了两个基金玩玩接触一下行情, 后来发现, 每次都不知道它什么时候更新这个变动净值参数,每次都要自己去搜索, 或者又要登录一遍去看盈亏, 够懒吧, 嘿嘿, 后来突发奇想, 跟朋友了解一下是不是有什么公式能计算得到相关的净值参数的, 于是翻了一遍, 发现对[天...

python中schedule模块的简单使用 || importlib.import_module动态导入模块

1 import schedule 2 import time 3 4 def start(): #定义一个函数 5 print("****") 6 7 8 if __name__ == '__main__': 9 schedule.every(2).seconds.do(start) #它的意思就是每隔...