gyt200300 6 months ago
parent 9e7123f63c
commit e6ce81d9c0

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/extracted_data.csv" charset="GBK" />
</component>
</project>

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.12 (pythonProject)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (pythonProject)" project-jdk-type="Python SDK" />
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/pythonProject.iml" filepath="$PROJECT_DIR$/.idea/pythonProject.iml" />
</modules>
</component>
</project>

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.12 (pythonProject)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,36 @@
# -*- coding: gbk -*-
from typing import List
import mysql
import mysql.connector
import csv
db_config = {
'host': 'Mysql',
'user': 'root',
'password': '21412030117',
'database': 'words',
}
cnx = mysql.connector.connect(**db_config)
cursor = cnx.cursor()
# 读取CSV
with open('extracted_data.csv', mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
headers = next(reader, None)
if headers is not None: # 过表头
for row in reader:
sql = "INSERT IGNORE INTO words(xuhao,neirong) VALUES (%s, %s)"
cursor.execute(sql, (row[0], row[1])) #设csv与数据库对应
try:
# ...(原来的执行代码)
cnx.commit()
print("数据导入成功!")
except mysql.connector.Error as err:
print(f"数据导入失败: {err}")
finally:
cursor.close()
cnx.close()

File diff suppressed because it is too large Load Diff

@ -0,0 +1,44 @@
import pymysql
# 数据库连接配置
db_config = {
'host': 'localhost', # 数据库地址
'user': 'your_username', # 数据库用户名
'password': 'your_password', # 数据库密码
'database': 'word', # 数据库名
'charset': 'utf8mb4', # 字符编码
}
# 待插入的数据
data_to_insert = [
(1, 'abandon vt.旬弃;形弃,萨瑟'),
(2, 'ability n.能力;能耐,乃炸'),
# ... 其他数据 ...
# 注意:这里的每一项都是一个元组,格式为(序号, 内容)
]
# 连接数据库并尝试插入数据
try:
connection = pymysql.connect(**db_config)
cursor = connection.cursor()
# 执行批量插入
for item in data_to_insert:
xuhao, neirong = item
insert_sql = "INSERT INTO word (xuhao, neirong) VALUES (%s, %s)"
cursor.execute(insert_sql, (xuhao, neirong))
# 提交事务
connection.commit()
print("数据插入成功!")
except Exception as e:
print(f"数据插入失败,错误信息:{e}")
# 发生错误时回滚事务
if connection:
connection.rollback()
finally:
# 关闭游标和连接
if cursor:
cursor.close()
if connection:
connection.close()

@ -0,0 +1,39 @@
import re
import csv
from bs4 import BeautifulSoup
import requests
url = 'https://zhuanlan.zhihu.com/p/105570623'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 初始化数据列表,用于存放提取的信息
data = []
# 假设我们要提取页面上的所有段落文本中数字加句号后面的内容
paragraphs = soup.find_all('p')
for paragraph in paragraphs:
text = paragraph.get_text()
# 使用正则表达式匹配数字加句号后面的内容
matches = re.findall(r'\d+\.\s*(.*)', text)
for match in matches:
# 将匹配到的内容添加到data列表中这里假设序号是连续的从1开始递增
data.append([len(data)+1, match.strip()])
# 定义CSV文件的名称
filename = 'extracted_data.csv'
# 写入CSV文件
with open(filename, 'w', newline='', encoding='utf-8') as csvfile:
csvwriter = csv.writer(csvfile)
# 写入表头
csvwriter.writerow(['序号', '内容'])
# 写入数据
for row in data:
# 注意,原问题没有明确"单词"来源,这里假设每条数据只有序号和内容两列
csvwriter.writerow(row)
print(f"数据已成功写入{filename}")

@ -0,0 +1,94 @@
import sqlite3
import random
import tkinter as tk
from tkinter import Toplevel
# 数据库连接与初始化
def init_db_connection():
conn = sqlite3.connect('word_database.db')
cursor = conn.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS Words (word TEXT, meaning TEXT, learned INTEGER)')
conn.commit()
return conn
# 获取未学习的单词
def get_unlearned_word(conn):
cursor = conn.cursor()
cursor.execute('SELECT word, meaning FROM Words WHERE learned = 0 ORDER BY RANDOM() LIMIT 1')
result = cursor.fetchone()
if result:
return {'word': result[0], 'meaning': result[1]}
return None
# 标记单词为已学习
def mark_learned(word, conn):
cursor = conn.cursor()
cursor.execute('UPDATE Words SET learned = 1 WHERE word = ?', (word,))
conn.commit()
# 初始化主窗口
root = tk.Tk()
root.title("单词学习系统")
def open_new_window1(conn):
new_window = Toplevel(root)
new_window.title("新单词")
def learn_next_word():
word = get_unlearned_word(conn)
if word:
label_word.config(text=word['word'])
label_meaning.config(text=word['meaning'])
current_word = word['word']
else:
tk.messagebox.showinfo("提示", "没有更多新单词了!")
def review_previous():
# 实现回顾逻辑(这里简化处理,实际可能需要维护一个历史单词队列)
pass
current_word = get_unlearned_word(conn)
if current_word:
label_word = tk.Label(new_window, text=current_word['word'])
label_word.pack()
label_meaning = tk.Label(new_window, text=current_word['meaning'])
label_meaning.pack()
button_next = tk.Button(new_window, text="下一个单词", command=learn_next_word)
button_next.pack()
button_review = tk.Button(new_window, text="回顾", command=review_previous)
button_review.pack()
else:
tk.messagebox.showinfo("提示", "没有新单词!")
def open_new_window2(conn):
new_window = Toplevel(root)
new_window.title("复习单词")
def open_new_window3(conn):
new_window = Toplevel(root)
new_window.title("易错单词")
# 同样,易错单词窗口逻辑需根据错误记录定制,这里简化处理
pass
button1 = tk.Button(root, text="学习新单词", command=lambda: open_new_window1(init_db_connection()))
button1.pack(pady=10)
button2 = tk.Button(root, text="复习单词", command=lambda: open_new_window2(init_db_connection()))
button2.pack(pady=10)
button3 = tk.Button(root, text="易错单词", command=lambda: open_new_window3(init_db_connection()))
button3.pack(pady=10)
root.mainloop()

Binary file not shown.
Loading…
Cancel
Save