大家好呀,最近在做一个关于经纬度绘制轨迹图的工作,那么就需要对存储在数据库中的数据进行提取,但是数据存入到文本文档以后,用python调用的时候就会发现数据是以字符串的形式输出的,所以本文的目标是对数据进行列表嵌套以及列表内数据类型转换工作。文笔不好,请大家多多包涵。
原始数据类型呈现
原始的数据在TXT里是以下图这种方式进行存储的
但是当我们用python读取这些数据的时候,结果却是以字符串的形式输出的:
与我们想要的[[39.1279124, 117.3599854], [39.1279124, 117.3599854], ...]这种格式差距还是蛮大的,接下来我们就要开始对原始数据进行转化。
转化列表内数字类型
给大家先介绍两个语句:
re.split('',字符串名称) #利用re模块按多个分割符进行分割,''内填分隔符号
map(function,列表名) #map接收一个函数以及一个对象(列表),用函数处理这个列表内每一个元素,然后再将结果返回该列表
利用这两条语句就可以将列表内字符串转化为浮点型
列表分割嵌套
比如原来的列表是[1,2,3,4,5,6],但是现在我需要将它变为[[1,2],[3,4],[5,6]],将大的列表分割为几个小的列表形式。需要用到以下语句
n = ? # ?为自定义值 要按几个进行分割操作
[list[i:i+n] for i in range(0,len(列表名[]),n)] #对列表list进行操作 注意[i:i+n]是左闭右开区间
这样就可以将列表进行嵌套操作
完整代码
import sys
import re
result=[]
file_path = r'C:\Users\xy.txt'
with open(file_path,'r') as f:
result =f.read()
split = re.split(',|\n',result) #列表分割
splits = list(map(float,split)) #列表字符串转换为浮点型
n = 2 #大列表中几个数据组成一个小列表
a = [splits[i:i + n] for i in range(0, len(splits), n)]
print(a)
结果如下图示:
[[39.1279124, 117.3599854], [39.1279124, 117.3599854], [39.1279124, 117.3599701], [39.1279106, 117.3599724], [39.1279106, 117.3599724], [39.1279106, 117.3599724], [39.1279106, 117.3599724], [39.1279106, 117.3599724], [39.1279106, 117.3599724], [39.1279124, 117.3599854], [39.1279124, 117.3599854], [39.1279106, 117.3599724], [39.1279106, 117.3599724], [39.1279124, 117.3599854], [39.1279124, 117.3599854], [39.1279124, 117.3599854], [39.1279124, 117.3599854], [39.1278992, 117.3599873], [39.1278992, 117.3599873], [39.1277727, 117.3601227], [39.1277611, 117.3601379], [39.1277504, 117.3601665], [39.1277275, 117.3602112], [39.1277161, 117.360256], [39.1277046, 117.360271], [39.1276932, 117.3603157], [39.1276796, 117.3603516]]
代码不长,但是里面的逻辑思路还是可以想一下的。