2010-10-31 37 views
5

Tôi mới dùng python đang sử dụng nó cho đồ họa nhưng không bao giờ thực hiện nó cho các vấn đề khác. Câu hỏi của tôi là làm thế nào để đọc tập tin này là tab hoặc không gian phân cách và có tiêu đề trong python, tôi biết làm thế nào để làm dấu phẩy delimted tập tin nhưng không làm điều này trên?đọc một tệp trong python

ID YR MO DA YrM MoM DaM 
100 2010 2 20 2010 8 2010 30 
110 2010 4 30 2010 9 2010 12  
112 2010 8 20 2010 10 2010 20 

Cũng có cách tìm sự khác biệt về số ngày giữa hai ngày.

Trả lời

4

Đối với các tác vụ đơn giản, bạn chỉ có thể sử dụng phương thức str.split(). split() lấy dấu phân tách làm tham số của nó, nhưng chia tách trên khoảng trống nếu không có khoảng trắng nào được đưa ra.

>>> lin="a b c d" 
>>> lin.split() 
['a', 'b', 'c', 'd'] 
17

Kỹ thuật tương tự cho mô-đun csv có hoạt động không?

import csv 
reader = csv.reader(open("filename"), delimiter="\t") 

Dấu phân tách có thể là "\ s" hoặc "\ t".

Bạn cũng có thể sử dụng DictReader theo cách này:

f = open(filename, '') 
try: 
    reader = csv.DictReader(f) 
    for row in reader: 
     print row 
finally: 
    f.close() 

bạn cũng có thể sử dụng kỹ thuật brute force

for line in open(filename): 
    listWords = line.split("\t") 

chia chức năng:

>>> t = 'ID YR MO DA YrM MoM DaM' 
>>> t.split(" ") 
['ID', 'YR', 'MO', 'DA', 'YrM', 'MoM', 'DaM'] 

Để tính toán không có ngày, sử dụng mô-đun datetime: http://docs.python.org/library/datetime.html

>>> import datetime 
>>> k = datetime.date(2010, 05, 26) - datetime.date(2010, 02, 10) 
>>> k.days 
105 
>>> 
+0

vì vậy nếu tôi sử dụng trình đọc csv làm cách nào để truy cập từng phần tử của mỗi hàng từ tệp đầu vào. – user458858

+0

sử dụng csv.DictReader và hàng tiêu đề sẽ được sử dụng để đọc các khóa cho từng giá trị tương ứng trong các hàng sau đây, sau đó mỗi hàng sẽ trả về giá trị hàng với giá trị của hàng dict. – PaulMcG

+0

Tuyệt vời, không bao giờ biết rằng tôi có thể sử dụng csv với các tệp không phải csv. Nhưng sử dụng dấu phân cách = "\ s" dường như không hoạt động. – sykora

Các vấn đề liên quan