如何将文本从.txt文件中分离到数据库中的另一列?(分隔符是一个字符串)



我得到了一个这样的.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

相关内容

最新更新