2011-11-29 63 views
1

我有具有以下结构的文本文件:Python:使用'|'解析文本文件到MySQL表

341|18 Hello world|20090225230048AAnhStI|90|$0.30|10|289|2|2|2|Is that foo or 
boo bar? 18 |Is it boo foo and foo bar?| |I beleive its foo.|396545163|foo 
& bar>foo & boo 

基本上每一个数据元素是由|分离。我打算使用Python脚本来解析这些数据并将其写入表中。根据我从互联网收集的信息,我无法利用Python的制表符分隔或逗号分隔选项将这样的文件导入到MySql数据库中。

  • 我错了吗?
  • 如果是这样,做这样的事情最好的选择是什么?

我的想法是创建一个表,只提取我想从上面的字符串中提取的元素,以将其存储在每列中。但是,我也想知道如何跟踪要提取的内容。当我迭代每个元素时,我是否使用计数器..?

我以为在继续之前我会问这些问题。

我现在的直觉是要做到以下几点:

import sys 

file = open('datafile.txt') 
for line in file: 
    print line.strip().split('|') 
+0

如果你不想做繁重的操作,您可以使用** LOAD DATA INFILE **将数据加载到表:HTTP://dev.mysql。 com/doc/refman/5.1/en/load-data.html –

+0

我想你应该看看http://docs.python.org/library/csv.html,它有很大的威力。它应该能够使用管道作为分隔符。 – Pengman

回答

3

您当前的代码是好的。您也可以使用csv.reader

import csv 
with open('datafile.txt', 'rb') as f: 
    for row in csv.reader(f, delimiter='|'): 
     ... 
+0

我刚刚尝试了你放入的代码,但并未真正起作用。感谢您的csv.reader链接.. –

+0

修复了代码中的错误...另外我还有一个问题,我怎么才能只获得我想避免从下面的字符串中提取忽略的字段.. hello | world |忽略| 101谢谢.. –