如果在文件中出現的值是不是「或分隔值Python腳本從文件中讀取並獲得價值
"Name" "Tom" "CODE 041" "Has"
"Address" "NSYSTEMS c/o" "First Term" "123" 18
"Occ" "Engineer" "Level1" "JT" 18
應如何Python腳本編寫,以便讓所有的上述數值單獨
如果在文件中出現的值是不是「或分隔值Python腳本從文件中讀取並獲得價值
"Name" "Tom" "CODE 041" "Has"
"Address" "NSYSTEMS c/o" "First Term" "123" 18
"Occ" "Engineer" "Level1" "JT" 18
應如何Python腳本編寫,以便讓所有的上述數值單獨
你的問題有點含糊,在你的例子中沒有逗號,所以提供一個好的答案有點困難。
在包含
"Name" "Tom" "CODE 041" "Has"
"Address" "NSYSTEMS c/o" "First Term" "123" 18
"Occ" "Engineer" "Level1" "JT" 18
這個腳本
import csv
reader = csv.reader(open('test.txt'), delimiter=' ', quotechar='"')
for row in reader:
print(row)
您的示例文件產生
['Name', 'Tom', 'CODE 041', 'Has']
['Address', 'NSYSTEMS c/o', 'First Term', '123', '18']
['Occ', 'Engineer', 'Level1', 'JT', '18']
這假定值之間的分隔符是一個空格。如果是選項卡,請改用delimiter='\t'
。
如果分隔符在整個文件中發生更改,那麼使用這種方法會很失敗 - 在這種情況下,它們不再是有效的CSV/TSV文件。但所有這些只是猜測,直到您可以提供一些您想要分析的數據的實際和相關示例。
+1,當然應該使用csv閱讀器。我應該想到這一點。 – Mizipzor 2010-06-22 10:07:22
的另一種方法使用CSV閱讀器。
in.txt
"Name" "Tom" "CODE 041" "Has"
"Address" "NSYSTEMS c/o" "First Term" "123" 18
"Occ" "Engineer" "Level1" "JT" 18
parse.py
for i in [line.split('"') for line in open("in.txt")]: # split on the separator
for j in i: # for each token in the split string
if len(j.strip())>0: # ignore empty string, like the spaces between elements
print j.strip()
out.txt
Name
Tom
CODE 041
Has
Address
NSYSTEMS c/o
First Term
123
18
Occ
Engineer
Level1
JT
18
不過,我會打電話給你的價值觀" enclosed
。我看不到任何, separated
。你能擴展你的測試數據嗎?顯示一些具有分隔值的行,並展開我的代碼。
這將失敗的「代碼041」 – 2010-06-22 10:02:04
我剛剛意識到,但由於使用CSV閱讀器是一個更好的方法,我沒有更新的問題。但在這裏留下破碎的代碼是不好的,所以現在就更新它。 – Mizipzor 2010-06-22 10:08:39
使用CSV模塊,它會處理所有類型的分隔符和引號的正確,採用分體式等編寫這樣的代碼是不平凡的
import csv
import StringIO
data = '''"Name" "Tom" "CODE 041" "Has"
"Address" "NSYSTEMS c/o" "First Term" "123" 18
"Occ" "Engineer" "Level1" "JT" 18"
'''
reader = csv.reader(StringIO.StringIO(data), delimiter=' ')
for row in reader:
print row
輸出:
['Name', 'Tom', 'CODE 041', 'Has']
['Address', 'NSYSTEMS c/o', 'First Term', '123', '18']
['Occ', 'Engineer', 'Level1', 'JT', '18']
我得到的輸出爲 '[''''''','''','','',''',''','''''','真實','數字','是','代表'獨特','點','上','','數','線','和','相反','每','點','上',''','號碼'''''',''表示','a','唯一','真實','數字'。\ t \ t \ t \ t \ t']'........... .......... – Hulk 2010-06-22 10:13:25
@Hulk:如果你沒有提供正確的例子,我們不能寫出正確的代碼。現在看起來好像記錄是製表符分隔的,而不是空格或逗號。 – 2010-06-22 10:53:14
我沒有看到一個逗號在你的例子中 - 你能否詳細說明一下? – 2010-06-22 09:52:42
請發佈您嘗試的代碼。 – 2010-06-22 10:07:28