python读取txt、json、csv、xml四种文件,并将读出的数据转化成字典,附带四种数据格式

一、参考文章:

参考xml读取数据
四种格式读取

二、python读取txt、json、csv、xml四种文件,并将读出的数据转化成字典

def importCamOrbit(self,file_path,file_type):
	 dic={}
	
	 if file_type=="Text files (*.txt)":
	     file = open(file_path, 'r')
	     setting_dic=[]
	     for line in file.readlines():
	         line = line.strip('\n')  # 去掉列表中每一个元素的换行符
	         setting = line.split(':')
	         setting_dic.append(setting)
	     dic = dict(setting_dic)
	     print(dic)
	
	 elif file_type=="XML files (*.xml)":
	     file = parse(file_path)
	     ele = file.documentElement
	
	     settings = ele.getElementsByTagName("setting")[0]
	     # print(settings)
	     # 获取setting元素中 的元素 a的数据
	     # print(settings.getElementsByTagName("a")[0].childNodes[0].data)
	
	     keys = ["半长轴", "偏心率", "真近点角", "倾角", "升交点赤经", "近轴点时间", "近距面", "远距面", "视场角", "x", "y", "z"]
	     values = [settings.getElementsByTagName('a')[0].childNodes[0].data,
	               settings.getElementsByTagName("e")[0].childNodes[0].data,
	               settings.getElementsByTagName("w")[0].childNodes[0].data,
	               settings.getElementsByTagName("tilt")[0].childNodes[0].data,
	               settings.getElementsByTagName("omega")[0].childNodes[0].data,
	               settings.getElementsByTagName("tp")[0].childNodes[0].data,
	               settings.getElementsByTagName("near")[0].childNodes[0].data,
	               settings.getElementsByTagName("far")[0].childNodes[0].data,
	               settings.getElementsByTagName("alp")[0].childNodes[0].data,
	               settings.getElementsByTagName("view_x")[0].childNodes[0].data,
	               settings.getElementsByTagName("view_y")[0].childNodes[0].data,
	               settings.getElementsByTagName("view_z")[0].childNodes[0].data]
	     dic = dict(zip(keys, values))
	     print(dic)
	
	 elif file_type=="JSON files (*.json)":
	     file = open(file_path, 'r',encoding='UTF-8')
	     dic = json.load(file)
	     print(dic)
	     # print(type(dic))
	
	 elif file_type=="CSV files (*.csv)":
	     file = open(file_path, 'r', encoding='UTF-8')
	     reader = csv.reader(file)
	     fieldnames = next(reader)  # 获取数据的第一列,作为后续要转为字典的键名生成器,next方法获取
	     # print(fieldnames)
	     csv_reader = csv.DictReader(file, fieldnames=fieldnames)
	     # self._fieldnames = fieldnames
	     # list of keys for the dict 以list的形式存放键名
	     for row in csv_reader:
	         dic = {}
	         for k, v in row.items():
	             dic[k] = v
	     print(dic)
	
	 return dic

三、数据

1. txt数据:

半长轴:50000.1690
偏心率:0.0000
真近点角:0.0000
倾角:0.00000
升交点赤经:0.00000
近轴点时间:90.0000
近距面:0.1000
远距面:300000.0000
视场角:22.1182
x:0.000
y:0.000
z:0.000

2. xml数据

<?xml version='1.0' encoding='utf-8' ?>
<!--
    a 半长轴:50000.1690
    e 偏心率:0.0000
    w 真近点角:0.0000
    tilt 倾角:0.00000
    Omega 升交点赤经:0.00000
    tp 近轴点时间:90.0000
    near 近距面:0.1000
    far 远距面:300000.0000
    alp 视场角:22.1182
    view_x x:0.000
    view_y y:0.000
    view_z z:0.000
-->
<P_target>
        <setting>
                <a>50000.1690</a>
                <e>0.0000</e>
                <w>0.0000</w>
                <tilt>0.00000</tilt>
                <omega>0.00000</omega>
                <tp>90.0000</tp>
                <near>0.1000</near>
                <far>300000.0000</far>
                <alp>22.1182</alp>
                <view_x>0.000</view_x>
                <view_y>0.000</view_y>
                <view_z>0.000</view_z>
        </setting>
</P_target>


3. json数据

{
  "半长轴":50000.1690,
  "偏心率":0.0000,
  "真近点角":0.0000,
  "倾角":0.00000,
  "升交点赤经":0.00000,
  "近轴点时间":90.0000,
  "近距面":0.1000,
  "远距面":300000.0000,
  "视场角":22.1182,
  "x":0.000,
  "y":0.000,
  "z":0.000
}

4. csv数据

"半长轴","偏心率","真近点角","倾角","升交点赤经","近轴点时间","近距面","远距面","视场角","x","y","z"
50000.1690,0.0000,0.0000,0.00000,0.00000,90.0000,0.1000,300000.0000,22.1182,0.000,0.000,0.000
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值