unu*_*tbu 19
使用csv模块,您可能会执行以下操作:
import csv
names=[]
ages=[]
with open('data.csv','r') as f:
next(f) # skip headings
reader=csv.reader(f,delimiter='\t')
for name,age in reader:
names.append(name)
ages.append(age)
print(names)
# ('Mark', 'Matt', 'John', 'Jason', 'Matt', 'Frank', 'Frank', 'Frank', 'Frank')
print(ages)
# ('32', '29', '67', '45', '12', '11', '34', '65', '78')
Run Code Online (Sandbox Code Playgroud)
Sin*_*ion 10
制表符分隔的数据位于csv模块的域中:
>>> corpus = 'Name\tAge\nMark\t32\nMatt\t29\nJohn\t67\nJason\t45\nMatt\t12\nFrank\t11\nFrank\t34\nFrank\t65\nFrank\t78\n'
>>> import StringIO
>>> infile = StringIO.StringIO(corpus)
Run Code Online (Sandbox Code Playgroud)
假装infile只是一个常规file......
>>> import csv
>>> r = csv.DictReader(infile,
... dialect=csv.Sniffer().sniff(infile.read(1000)))
>>> infile.seek(0)
Run Code Online (Sandbox Code Playgroud)
你甚至不必告诉csv模块标题和分隔符格式,它会自己弄清楚它
>>> names, ages = [],[]
>>> for row in r:
... names.append(row['Name'])
... ages.append(row['Age'])
...
>>> names
['Mark', 'Matt', 'John', 'Jason', 'Matt', 'Frank', 'Frank', 'Frank', 'Frank']
>>> ages
['32', '29', '67', '45', '12', '11', '34', '65', '78']
>>>
Run Code Online (Sandbox Code Playgroud)
我将使用字符串的split和splitlines方法:
names = []
ages = []
for name_age in input.splitlines():
name, age = name_age.strip().split("\t")
names.append(name)
ages.append(age)
Run Code Online (Sandbox Code Playgroud)
如果您解析的是更复杂的格式,我建议您使用csv模块,该模块也可以处理tsv…。但是似乎在这里有点过头了。