寫乙個指令碼讀取。csv 檔案存入資料庫,本來是想使用dictreader 來直接生成字典,sqlalcharm 直接插入資料庫,但是由於檔案是產品使用,填寫,都是英文 列頭 看不太明白,行列也不是可以直接使用的設計。如果按照容易插入資料但是 這樣使用文件的時候不方便。所以我就轉換了一些。御用到了 numpy 多維陣列,按照列每列都是乙個 資料物件。使用到二維陣列,通過座標來讀取
rule2.py **
主要是用來解析csv 檔案 ,然後返回每個物件,用來插入資料庫。
import csv
import numpy as np
from yang.all_test.day16.rule_operator import operation
data = dict()
data[1] = "nickname"
data[2] = "***"
data[3] = "birthday"
data[4] = "height"
data[5] = "hometown"
data[6] = "occupation_id"
data[7] = "school"
data[8] = "degree_id"
data[9] = "i_am"
data[10] = "i_like"
data[11] = "i_dislike"
data[12] = "i_hope"
data[13] = "book"
data[14] = "movie"
data[15] = "music"
data[16] = "sport"
defget_data
():with open('matchrule.csv', 'rt', encoding='utf8') as c:
reader = csv.reader(c)
rows = [row[1:] for row in reader]
#使用 numpy 轉化為陣列, a 現在就是乙個二維陣列
a = np.array(rows)
# k 用來存每乙個物件
k = list()
row = [i for i in range(len(a))]
for i in range(len(a[0])):
col = list()
for j in range(len(a)):
y = a[row, col]
# y = a[[0, 1, 2, 3], [0, 0, 0, 0]]
# 程式的弊端是 比較依賴csv 檔案按照要求寫, 目前程式的容錯和健壯性不是特別好。
# 這裡還要保證 列表是有序輸出的,這樣才能對得上
# 獲取所有要新增的物件資料(元素,字典物件, 對資料進行處理)
instance = operation()
obj_data_list = list()
for one in k:
data_temp = dict()
for index, element in enumerate(one):
key = data.get(index, "")
if key:
element = instance.get_element(key, element)
data_temp[key] = element
print(obj_data_list)
return obj_data_list
# get_data()
rule_operator.py
用來處理存入資料庫之前 資料格式,容錯, 獲取,賦值的操作等
from tools.ohho_datetime import ohhodatetime
from ohho.common.db.ohho.base.db_ohho_interest import dbohhointerest
list_ele = ["i_am", "i_like", "i_dislike", "i_hope"]
class
operation
(object):
def__init__
(self):
self.interest = dbohhointerest()
defget_element
(self, key, element):
# result[key] = ohhodatetime.clock2string(ohhodatetime.utc2beijing(value))
if key == "birthday":
element = element.split("(")[0]
element = ohhodatetime.string2date(element)
elif key == "occupation_id":
degree_id = self.interest.get_by_key(element)
ifnot degree_id:
element = 0
else:
element = degree_id.id
elif key == "degree_id":
degree_id = self.interest.get_by_key(element)
ifnot degree_id:
element = 0
else:
element = degree_id.id
elif key in list_ele:
import re
rep = element.replace('\n', "")
b = re.split(';|;', rep) # 中文分號,和英文分號容錯
data = dict()
data["first"] = b[0] if len(b) > 0
else
"" data["second"] = b[1] if len(b) > 1
else
"" data["third"] = b[2] if len(b) > 2
else
"" element = data
return element
insert_data.py 就是一些業務邏輯和 資料之間的互動 多位數乘法計算
option base 1 private sub command1 click dim m as string dim n as string m trim text1.text n trim text2.text dim number1 as byte dim number2 as byte r...
彙編 多位數相加
上一次彙編寫到,只是個位數的簡單相加,只需要判斷兩者相加有無進製,進製即進一,在輸出視窗輸出一先。遇到多位數後,會變複雜很多,事實上彙編裡面可以實現相加,難題在於需要把和轉成ascii碼顯示在dos視窗。所以需要把和乙個乙個數提取,轉成ascii。程式如下 datas segment op1 dw ...
004 美化多位數字
將給定的數字以逗號分隔的形式顯示出來 bin bash filename nicenum.sh 可接受兩個選項 dd decimal pointa,小數分隔符 和td thousands delimiter,千位分隔符 nicenumber decimal fi thousands int whil...