題庫txt:
代碼:
import sys
import re
import sqlite3
cx = sqlite3.connect('./avpig_sde.db') #創建數據庫,如果數據庫已經存在,則鏈接數據庫;如果數據庫不存在,則先創建數據庫,再鏈接該數據庫。
cu = cx.cursor() #定義一個遊標,以便獲得查詢對象。
cu.execute('create table if not exists a41 ([_id] integer PRIMARY KEY AUTOINCREMENT, [content] varchar NOT NULL, [answer] varchar NOT NULL, [parse] varchar, [note] varchar, [type] int NOT NULL, [chapter_id] varchar NOT NULL, [url] VARCHAR)') #創建表
content_list=[]
anwser_list=[]
# 第一種寫法
# patch_file_name="gj_1.txt"
# patch_file=open(patch_file_name,'r') #打開文檔,逐行讀取數據
# content=patch_file.read()
# patch_file.close()
# content_list=re.split('[答][案][:][A-D][.]', content)
# #print(content_list)
i = 0
#第二種寫法
with open('gj_1.txt','r') as f1:
contents = f1.read()
content_list=re.split('[答][案][:][A-D][.]', contents)
print(content_list)
with open('gj_1.txt','r') as f:
for line in f:
index = line.find('答案:')
print(index)
if index != -1:#表示沒有找到“答案:”
anwser_list.append(line[int(index+3)])
print(anwser_list)
print(content_list[i])
cu.execute('insert into a41 (_id, content, answer, type, chapter_id) values (?,?, ?,?,?)',(i+1, content_list[i].strip(), anwser_list[i].strip(), 1,"1."))
i +=1
#anwser_list.append(list(line.strip('\n').split(','))[0])
# print(anwser_list)
# print(content_list)
cu.close() #關閉遊標
cx.commit() #事務提交
cx.close() #關閉數據庫
註釋:
-
首先連接SQLite3數據庫
-
之前沒有數據庫就直接用SQL語句創建。
-
讀txt文件到內存中,讀成 list[]
-
再用SQL語句導入SQLite3數據庫
-
關閉數據庫
知識點:
patch_file_name="gj_1.txt”
patch_file=open(patch_file_name,'r') #打開文檔,逐行讀取數據
content=patch_file.read()
patch_file.close()
content_list=re.split('[答][案][:][A-D][.]', content)
with open('gj_1.txt','r') as f
這種方法不需要再去寫close文件的代碼,他會自動去close。可以整體讀取用read(),輸出結果是一個list[]. 也可以用 for … in… 遍歷出每個元素。
content_list=re.split('[答][案][:][A-D][.]', contents)
anwser_list[i].strip()
e.g 我是頭部空格__我是內容__我是尾部空格.strip() -> 我是內容