2011-03-29 13 views
1

我正在讀取類似於以下內容的.csv文件。請注意,PhoneNumbers可以包含由管道字符分隔的多個值。解析出第二個分隔數據結構

名字,姓氏,PHONENUMBERS
巴基,富勒,213.283.5555 | 714.345.5566
斯蒂芬·霍金,212.456.7897 | 312.345.6677 | 415.223.3423
羅伯特·海因萊因,562.457.8899

我可以讀取.csv文件並使用以下內容寫入文件。

..... 
dReader = csv.DictReader(open('employee_import.csv', 'rb'), delimiter=',', quotechar='`') 
for row in dReader: 
file.write("\t\t\t<PHONEBOOK>\n") 
file.write("\t\t\t\t<LASTNAME>"+str(row.get('LastName'))+"</LASTNAME>\n") 
file.write("\t\t\t\t<FIRSTNAME>"+str(row.get('FirstName'))+"</FIRSTNAME>\n") 
file.write("\t\t\t\t<PHONENUM>"+str(row.get('PhoneNumbers'))+"</PHONENUM>\n") 
    file.write("\t\t\t<PHONEBOOK>\n") 
..... 

我想知道如果任何人有任何想法,我可以怎樣通過PHONENUMBERS鍵,值對迭代,這樣我可以分離出多個PHONENUMBERS一個人可以有?謝謝。

回答

1

爲什麼不分割電話號碼字段?

for number in str(row.get('PhoneNumbers')).split('|'): 
    file.write("\t\t\t\t<PHONENUM>"+number+"</PHONENUM>\n") 
+0

璀璨......我認爲它對我的情況完美無缺。爲了回答你的問題,缺乏經驗是原因。謝謝。 – Jay 2011-03-29 21:18:57

0

我沒有測試過這一點,但我認爲它應該採取一個字符串,砍它成基於子串「|」分隔符,並返回這樣的字符串列表。希望能幫助到你。

def parser(string): 
phone_numbers = [] 
i = '' 
for character in string: 
    if character != '|': 
     i+=character 
    else: 
     phone_numbers.append(i) 
     i = '' 
     continue 
return phone_numbers 
+0

剛剛意識到,你將不得不修改這個來返回字符串中的最後一項,但除此之外,我認爲它應該工作。 – 2011-03-29 21:12:58

+0

'phone_number.split('|')'是一個很少的工作:) – senderle 2011-03-29 21:13:02

+0

你是對的。我不知道那件事。 – 2011-03-29 21:13:38