2014-12-02 52 views
0

好了,所以我有一個名單叫名字還有其他的詞語的列表,但是這個是一個名稱的結果[0]如何分割列表中的一個部分?

Chen,David,M,334791530,,11Z,,16770712,,,,,,00015956753, 
Chen,Peter,M,321564726,,11B,,19979810,,,,,,00012446698, 
Chung,Rowan,M,32355988,,11T,,17890708,,,,,,00012127821, 
Chung,Kyle,M,387638355,,10U,,19970317,,,,,,00015604870, 
Fan,Mark,M,34217543,,10U,,19707713,,,,,,00015799079, 

如何拆分名[0],使其出現與剛姓氏,名字和性別?

這裏是我的代碼的其餘部分:

file = open('CASS.txt', 'r') 
f = file.readlines() 
file.close() 
for line in f: 
    if line.find('ICS3M105')>=0: 
     names = line.split() 
     for name in names[0]: 
      if name in range(0,1): 
       print(names) 
+1

三側注:(1)'line.find( 'ICS3M105')> =''在IC3SM105中更具可讀性。 (2)'如果範圍(0,1)中的名字'基本上意味着'if name == 0',並且'name'是一個字符串,它總是會是假的。 (3)這裏沒有'readlines'的理由。在關閉文件之前,只需循環'對於文件中的行:'。 (另外,使用'with'語句去除顯式的'close'。) – abarnert 2014-12-02 20:32:55

+0

另外,如果你想解析CSV文件,請看['csv'](https://docs.python.org/ 3/library/csv.html)模塊。 '對於csv.reader(file)中的行:''會爲每個'row'提供一個'(last,first,sex,somenumber,',somecode,',someothernumber,...)'列表,沒有你做任何額外的工作。 – abarnert 2014-12-02 20:34:21

回答

1
for line in f: 
    names = line.split() 
    print names[0].split(',')[0:3] 
+0

你可以做'[:3]'而不是'[0:3]' – acushner 2014-12-02 20:38:18

+0

@rchang非常感謝! – eskoka 2014-12-02 22:38:56

0
>>> s = """Chen,David,M,334791530,,11Z,,16770712,,,,,,00015956753, 
      Chen,Peter,M,321564726,,11B,,19979810,,,,,,00012446698, 
      Chung,Rowan,M,32355988,,11T,,17890708,,,,,,00012127821, 
      Chung,Kyle,M,387638355,,10U,,19970317,,,,,,00015604870, 
      Fan,Mark,M,34217543,,10U,,19707713,,,,,,00015799079,""" 

您可以使用列表理解拆分的逗號,然後用切片索引元素[0][2](含)split操作。

>>> [i.split(',')[:3] for i in s.split('\n')] 
[['Chen', 'David', 'M'], 
['Chen', 'Peter', 'M'], 
['Chung', 'Rowan', 'M'], 
['Chung', 'Kyle', 'M'], 
['Fan', 'Mark', 'M']] 
1
with open('CASS.txt', 'r') as f: 
    for line in f: 
     name_last, name_first, gender = line.split(',')[0:3] 

或者使用csv模塊,這將可能是更可靠的對即將到來的任務

import csv 
with open('CASS.txt', 'r') as f: 
    for row in csv.reader(f): 
     name_last, name_first, gender = row[0:3]