2011-11-29 64 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謝謝.. –