读取1.txt当中的每一行,如果该行通过竖线分割的第二个字段中与正则表达式匹配的结果为非空,则字段作为该行的ac值,同时该行way值为空,如果该行与正则表达式匹配结果为空,则该行ac值为上一行的ac值,way值为该行第二字段的值,设初始行ac为空,将每一行的ac和way值插入数据库first当中的op表
时间: 2023-05-24 17:00:53 浏览: 129
正则表达式 操作 匹配 读取
以下是使用Python语言实现的代码:
```python
import re
import sqlite3
# 数据库连接,若数据库不存在则自动创建
conn = sqlite3.connect('first.db')
cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS op
(id INTEGER PRIMARY KEY AUTOINCREMENT, ac TEXT, way TEXT)''')
# 打开文本文件,并逐行读取
with open('1.txt', 'r', encoding='utf-8') as f:
ac = ''
for line in f:
# 使用正则表达式进行匹配
match = re.search('\|([^|]*)\|', line)
if match:
# 若匹配成功,则更新ac和way
ac = match.group(1)
way = None
else:
# 若匹配失败,则使用上一行的ac,并将该行第二字段作为way
way = re.search('\|([^|]*)$', line).group(1)
# 插入数据库
cursor.execute("INSERT INTO op (ac, way) VALUES (?, ?)", (ac, way))
# 关闭数据库连接
conn.commit()
conn.close()
```
请注意代码中的正则表达式和数据库SQL语句,如果1.txt中每行竖线分割的字段数量不一致,请先进行处理再运行此代码。
阅读全文