首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从.txt文件中将文本分隔到数据库中的另一列?(分隔符是一个字符串)

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

Stack Overflow用户
提问于 2019-10-20 08:12:36
回答 2查看 67关注 0票数 0

我得到了一个类似这样的.txt文件:"Rock也称为: Alternative rock“我需要使用sqlite3和python将其导入到数据库中。每种类型在不同的列中,如:

摇滚|另类摇滚

谢谢。

|:分隔列。

代码语言:javascript
复制
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()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-20 10:28:43

如果你想把所有东西都放在python中,那么我建议你使用regular expressions (regex) within python。下面的正则表达式应该与最新的python re模块兼容。它有两个与第一个和第二个字段匹配的捕获组。

代码语言:javascript
复制
^((?:\w|\s)+) also know as: ?((?:\w|\s)+?\w)\s*?$

将为每行获取两个字段值的代码片段如下所示

代码语言:javascript
复制
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)
   ...
票数 0
EN

Stack Overflow用户

发布于 2019-10-20 09:46:35

这是一个使用sed和sqlite3的有效解决方案。它说明了如何解决问题,并且可以很容易地调整为使用您喜欢的任意数量的python:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58469040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档