我得到了一个这样的.txt文件: "摇滚又称:另类摇滚" 我需要使用 sqlite3 和 python 将其导入数据库。 不同列中的每种类型,如下所示:
摇滚 | 另类摇滚
谢谢。
|:单独的列。
import sqlite3
conn = sqlite3.connect('chinook(1).db')
cur = conn.cursor()
file=open('subgenres3.txt','r')
try:
file = open('subgenres3.txt', 'r')
except:
print("file not found")
f=file.read()
f=f.split("n")
for line in f:
cur.execute("INSERT INTO subgénero (subgenrename,subgenrealtname) VALUES (?,?)", (line,line))
conn.commit()
conn.close()
如果你想把所有东西都保留在python中,那么我建议在python中使用正则表达式(regex(。 以下正则表达式应与最新的 pythonre
模块兼容。 它有两个与第一个和第二个字段匹配的捕获组。
^((?:w|s)+) also know as: ?((?:w|s)+?w)s*?$
获取每行两个字段值的代码段如下所示
p = re.compile('^((?:w|s)+?) also know as: *?((?:w|s)+?w)s*?$')
for line in f:
m = p.match(line)
subgenrename = m.group(1)
subgenrealtname = m.group(2)
...
这是一个使用 sed 和 sqlite3 的有效解决方案。 它说明了如何处理这个问题,并且可以很容易地适应使用尽可能多的python:
sed 's/ *also known* as: */,/' subgenres3.txt > subgenres3.csv
cat <<EOF | sqlite3 'chinook(1).db'
CREATE TABLE IF NOT EXISTS subgénero (subgenrename,subgenrealtname);
.mode csv
.import subgenres3.csv 'subgénero'
EOF