Python读取不同格式的文件:txt、csv、excel、json、xml、yaml

txt文件

[a.txt]
早上好
你好
f = open("a.txt", "r", encoding="utf-8")

# 一次性读取文件
print(f.read())
# 早上好
# 你好

# 一次读取一行,占用内存少,读取速度慢
print(f.readline())
# 早上好

# 一次读取相关的文本内容,速度快,占用内存多,元素存储的用列表的方式
print(f.readlines())
# ['早上好\n', '你好']

csv文件

在这里插入图片描述

import csv

f = open("b.csv", "r", encoding="utf-8")

c = csv.reader(f)

for cs in c:
    print(cs)

# ['张三', '男', '20']
# ['lisi', '女', '18']
# ['王五', '男', '22']

excel文件

pip install xlrd==1.2.0
在这里插入图片描述

import xlrd

xls = xlrd.open_workbook("c.xlsx")

sheet = xls.sheet_by_index(0)

print(sheet.ncols)   # 3   列数
print(sheet.nrows)   # 2   行数
print(sheet.row_values(1))   # ['李四', '女', 20.0]  第二行

for i in range(sheet.nrows):
    print(sheet.row_values(i))
    
# ['张三', '男', 18.0]
# ['李四', '女', 20.0]

json文件

loads():将json字符串转化为python对象
dumps():将python对象转化为json字符串

json_str = """
[{"name":"张三","sex":"男","age":28},{"name":"lisi","sex":"女","age":28}]
"""

import json

# loads():将json字符串转化为python对象
json1 = json.loads(json_str)
print(type(json1))  # <class 'list'>
print(json1)
# [{'name': '张三', 'sex': '男', 'age': 28}, {'name': 'lisi', 'sex': '女', 'age': 28}]

# dumps():将python对象转化为json字符串
json2 = json.dumps(json1, ensure_ascii=False)
print(type(json2))  # <class 'str'>
print(json2)
# [{"name": "张三", "sex": "男", "age": 28}, {"name": "lisi", "sex": "女", "age": 28}]


xml文件

可扩展标记语言,标准通用标记语言的子集,简称XML。一种用于标记电子文件使其具有结构性的标记语言。

try:
    import xml.etree.cElementTree as ET
except ImportError:
    import xml.etree.ElementTree as ET

tree = ET.parse("d.xml")
root = tree.getroot()

# print(root.tag)  # bookstore
# print(root.attrib)   # {'id': '1'}   属性

for child in root:
    print(child.tag)
    print(child.attrib)
    for children in child:
        print(children.tag)
        print(children.text)
        
# book
# {'categeory': 'COOKING'}
# title
# Everyday Italian
# author
# Giada De Laurentiis
# year
# 2005
# price
# 20.00
# book
# {'categeory': 'WEB'}
# title
# XML
# author
# Erik T. Ray
# year
# 2003
# price
# 39.95

YAML文件

是一个可读性高,用来表达数据序列化的格式

语法:
大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格
缩进的空格数目不重要,只要想同层级的元素左侧对齐即可

支持的数据结构:
对象、数组、纯量

pip install pyyaml

import yaml

yaml_str1 = "animal:pets"
yaml_ob1 = yaml.load(yaml_str1, Loader=yaml.FullLoader)
print(yaml_ob1)   # animal:pets

yaml_str2 = open("e.yaml", "r", encoding="utf-8").read()
yaml_ob2 = yaml.load(yaml_str2, Loader=yaml.FullLoader)
print(yaml_ob2)  # {'hash': {'name:Steve': None, 'foo:bar': None}}

yaml_str3 = open("e1.yaml", "r", encoding="utf-8").read()
yaml_ob3 = yaml.load(yaml_str3, Loader=yaml.FullLoader)
print(yaml_ob3)  # ['Cat', 'Dog', 'Goldfish']

补充:json类型与python类型对照

PythonJson
dictobject
lis,tuplearray
str,unicodestring
int,long,floatnumber
Truetrue
Falsefalse
Nonenull
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Taverry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值