将制表符分隔的值插入数据库

2024-05-14 02:34:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个tab-delimited txt file,其中的行由制表符分隔,行由换行符分隔。实际情况如下:

476502291\t\tLF3139812164\t\tTitle 1\tKids & Family\nGRAV_2011\t\tThe Full Picture\tIndependent\n [...etc...]

请注意,有时值由两个选项卡分隔,而不是一个。在

我需要将它插入到mysql表中,结果如下:

ID             title               genre
476502291      Title 1             Kids & Family
GRAV_2011      The Full Picture    Independent

如何读取一个制表符分隔的txt文件并运行for循环,以便使用MySQLdb将值插入到名为vendor的表中?在

^{pr2}$

Tags: txt情况familytabfull制表符filepicture
3条回答

只要制表符仅用作文件中的分隔符,您就可以执行以下操作:

import re

# connect to MySQLdb

with open(file_name) as f:
    for line in f:
        id, title, genre = re.split(r'\t+', line)
        # execute INSERT statement

其思想是始终有两组选项卡,一组在ID和title之间,另一组在title和genre之间。通过在\t+(一个或多个选项卡)上使用re.split(),您将得到一个长度为3的列表,其中包含您感兴趣的字段。在

如果文件中有任何行与此格式不匹配,则应在元组解包之前添加一些额外的检查,可能是data = re.split(r'\t+', line)和{}行的内容。在

编辑:此解决方案假设您没有空白字段,因此,如果一行只有一个ID和一个流派但没有标题是合法的,那么这将不起作用。如果你可以有一个标题,但没有ID或genre,只要在ID丢失时有前导标签,而在genre缺失时有尾随标签,它仍然可以工作。在

进口登记

连接到MySQLdb

打开(文件名)为f: 对于f行: id,标题,流派=重新分割(r'\t+',行) #执行INSERT语句

第1步。阅读csv模块。http://docs.python.org/library/csv.html。这是你想要的。在

with open('your_data_file.dat','r') as source:
    rdr= csv.reader( source, delimiter='\t', quotechar='')
    for row in rdr:
        # you have your columns with which to do your insert.
conn.commit()

第二步。阅读上下文管理器,也。在

^{pr2}$

这将确保正确关闭光标和文件。在

相关问题 更多 >