Python 搞搞数据库 简单的SQLite操作前 之矩阵 matrix
其中为了输入一些数据库量表,我不得不到官方网站里面去下载原来数据,然后导入到数据库中。
可是发现官方网站给的数据是pdf的,即使是拷贝下来,也是行列不在一起的,这样对将数据整合到数据库中是比较麻烦的。
为了不每条数据都一条一条地输入我想出了一个办法。
要输入的数据分别在此pdf文档的348 页,349页。复制粘帖到文本文档里面是按照每行每行的。数据并不是按照列来的。即使是复制到libraoffice 中也不能。
于是我想出了这个方法
这是直接复制的结果:
这是我们想要的排列组合,13行,3列 (下载地址:http://wenku.it168.com/d_000144410.shtml 分别位于348,349 页。两个表)
然后,是经过我转换的代码方法如下:
matrix1.py具体代码是:
1 data_matrix = [( 2 "Newfoundland and Labrador", 3 "Prince Edward Island", 4 "Nova Scotia", 5 "New Brunswick", 6 "Quebec", 7 "Ontario", 8 "Manitoba", 9 "Saskatchewan", 10 "Alberta", 11 "British Columbia", 12 "Yukon Territory", 13 "Northwest Territories", 14 "Nunavut" 15 ), 16 ( 17 512930, 18 135294, 19 908007, 20 729498, 21 7237479, 22 11410046, 23 1119583, 24 978933, 25 2974807, 26 3907738, 27 28674, 28 37360, 29 26745 30 ), 31 ( 32 370501.69, 33 5684.39, 34 52917.43, 35 71355.67, 36 1357743.08, 37 907655.59, 38 551937.87, 39 586561.35, 40 639987.12, 41 926492.48, 42 474706.97, 43 1141108.37, 44 1925460.18, 45 )] 46 47 temp_big = [] 48 for i in range(13): 49 temp = [] 50 for x in data_matrix: 51 temp.append(x[i]) 52 temp_big.append(temp) 53 print temp_big 54 #print zip(*data_matrix)
以上方法,是参考我曾经写过的一篇讲义得来的:http://blog.csdn.net/spaceship20008/article/details/8316983 在
5.1.4. Nested List Comprehensions 这个部分,还有更多内容,也在这个页面里面。这样就得到了里面的数据。
其实,我还想过用读取文本文档,每行一个元素,然后添加到元组tuple中的。其实方法都差不多。这个最好的是直接复制就好了。当然,复制完成后,一定的Vim操作功底是有的,比如
:行1,行2s/$/",/ #这个是用来在行1和行2最末尾处换上", 的意思,上面有用到,
或者可以使用ctrl + v 进入visual block,然后用 shift + i 进入全部插入状态。
以上两种vim操作方式各有千秋吧。visual block不能用在行尾(如果行尾不齐的话,还是用命令行比较好)
精髓之处在这里:
只需要将上面的代码稍微改写一下:
temp_big = [] for i in range(13): temp = [] for x in data_matrix: temp.append(x[i]) temp_big.append(temp) print temp_big
但是感觉,这样写并不节省变量。这样想是最简单的了。连续的append列表。
所以,这里奉上最简单的使用方法!
In the real world, you should prefer built-in functions to complex flow statements. The zip() function would do a great job for this use case:
只需要
就能得到结果
与我们做的不同的是,zip(*data_matrix)得到的结果,内嵌的是tuple元组。不过不影响使用。
看来build-in 函数zip是多么的有爱啊,哈哈~ 还有好多矩阵玩法,欢迎进入矩阵的世界 :)