簡體   English   中英

Python:如何讀取列表格式的文件?

[英]Python: How can I read a file with format of a list?

我有以下文件(g)..

-verifiziert.com | [1401832800]
00.pm | [1418511600, 1418598000, 1418943600]
00.re | [1410213600, 1417906800, 1418425200, 1419116400, 1418770800, 1417993200]
-verifizierungen.ne | [1401832800]
0.mk | [1414796400, 1415919600, 1417129200, 1416783600]

我想將它放入d [domains] =數字的字典中。 對於列表中的每個數字,我想要一個整數,因為它當前是一個字符串。

我正在使用此代碼:

d = defaultdict(list)
for line in g:
    line = line.strip('\n')
    domain, bl_dates= line.split('|')
    bl_dates = [int(i) for i in bl_dates]
    d[domain].append(bl_dates)

但我收到此錯誤,似乎該列表未被識別為列表:

Traceback (most recent call last):
  File "test.py", line 12, in <module>
    bl_dates = [int(i) for i in bl_dates]
ValueError: invalid literal for int() with base 10: '['

任何人都可以幫我嗎?

正則表達式是你的朋友:

import re

line = "00.pm | [1418511600, 1418598000, 1418943600]"
domain, bl_dates = re.split('\s+\|\s+', line)
res = [int(i) for i in re.findall('\d+', bl_dates)]
print res #  prints [1418511600, 1418598000, 1418943600]

這種事情應該起作用:

import json
d = defaultdict(list)
for line in g:
    domain, list = line.split('|')
    d[domain.strip()] = json.loads(list)

最后, d看起來像這樣:

{'00.re': [1410213600, 1417906800, 1418425200, 1419116400, 1418770800, 1417993200],
 '-verifizierungen.ne': [1401832800],
 '0.mk': [1414796400, 1415919600, 1417129200, 1416783600],
 '-verifiziert.com': [1401832800],
 '00.pm': [1418511600, 1418598000, 1418943600],
 }

你可以使用ast.literal_eval

>>> import ast
>>> ast.literal_eval("00.pm | [1418511600, 1418598000, 1418943600]".split("|")[1].strip())
[1418511600, 1418598000, 1418943600]

所以你的代碼將是這樣的:

import ast
my_dict = {}
with open('your_file') as f:
     for x in f:
         key, value = x.strip().split("|")
         my_dict[key.strip()] = ats.literal_eval(value.strip())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM