2015-10-19 13 views
5

Tôi có một file .txt với nội dung sau:Python: regex để làm cho một từ điển python ra khỏi một chuỗi các từ?

norway sweden 
bhargama bhargama 
forbisganj forbesganj 
canada usa 
ankara turkey 

Tôi muốn ghi đè lên tập tin rằng đây là những nội dung mới của nó:

'norway' : 'sweden', 
'bhargama': 'bhargama', 
'forbisganj' : 'forbesganj', 
'canada': 'usa', 
'ankara': 'turkey' 

Về cơ bản tôi muốn chuyển file .txt vào một từ điển python để tôi có thể thao tác nó. Có thư viện được xây dựng trong loại nhiệm vụ này không?

Đây là nỗ lực của tôi:

import re 
target = open('file.txt', 'w') 

for line in target: 
    target.write(re.sub(r'([a-z]+)', r'':'"\1"','', line)) 

Tôi đang thành công trong việc có dấu ngoặc kép; nhưng regex thích hợp để làm những gì tôi mô tả ở trên là gì?

+0

tại sao bạn muốn sử dụng regex ở đây không cần regex ở đây – The6thSense

+0

Điều đầu tiên bạn nghĩ đến ... Có cách nào hiệu quả hơn để làm điều đó không? – ifma

+0

sẽ chỉ có hai từ được phân tách bằng dấu cách – The6thSense

Trả lời

10

Bạn không cần cụm từ thông dụng cho điều đó.

File:

norway sweden 
bhargama bhargama 
forbisganj forbesganj 
canada usa 
ankara turkey 

Code:

with open('myfile.txt') as f: 
    my_dictionary = dict(line.split() for line in f) 

này đi qua mỗi dòng trong tập tin của bạn và chia nó vào khoảng trắng vào một list. Máy phát điện này của list s được cấp cho dict(), làm cho mỗi khóa và giá trị của từ khóa này trở thành một từ điển.

>>> my_dictionary['norway'] 
'sweden' 
+0

Cảm ơn sự giúp đỡ :) – ifma

+0

Nếu bạn không sử dụng 'strip()', giá trị sẽ có '' \ n'' cuối cùng, và tôi không muốn điều đó. – TigerhawkT3

+0

Tôi đã thử nghiệm nó (nhiều lần) và thấy rằng nó cần 'dải()'. Tuy nhiên, tôi đã thử nghiệm nó một lần nữa ngay bây giờ và nó không phải là sản xuất các kết quả tôi đã nhận trước. Tôi không biết tại sao kết quả lại khác, nhưng tôi sẽ xóa nó. – TigerhawkT3

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