[英]read every 25 line of a csv file and pass to list using python
我想讀取一個文件並將該文件的每 25 行轉換為一個列表,也就是說,它應該有 4 個列表,每個列表中有 25 個項目(一個文件的 100 行)。 我無法獲得此問題的代碼。 輸入文件看起來像這樣,實際上它有 100 行:
{'PutRequest': {'Item': {'id': {'S': 'E1DBEAE3'}, 'value': {'M': {'result': {'N': u'0.0015'}, 'lastupdatedtime': {'S': '2019-06-20'}}}}}}
{'PutRequest': {'Item': {'id': {'S': '31C6C'}, 'value': {'M': {'result': {'N': u'0.1129'}, 'lastupdatedtime': {'S': '2019-06-20'}}}}}}
{'PutRequest': {'Item': {'id': {'S': '59D40'}, 'value': {'M': {'result': {'N': u'0.00129'}, 'lastupdatedtime': {'S': '2019-06-20'}}}}}}
{'PutRequest': {'Item': {'id': {'S': 'A2A9'}, 'value': {'M': {'result': {'N': u'0.05129'}, 'lastupdatedtime': {'S': '2019-06-20'}}}}}}
另外,我想分別在每個列表的第一個元素和最后一個元素前面加上一個字符串,在前面加上一個字符串,如:
'{"test":[' and append string like: ']}'
在前置和附加之后,它應該看起來像列表大小為 3,例如:
{"test":[{'PutRequest': {'Item': {'id': {'S': 'E1DBEAE3'}, 'value': {'M': {'result': {'N': u'0.0015'}, 'lastupdatedtime': {'S': '2019-06-20'}}}}}}
{'PutRequest': {'Item': {'id': {'S': '31C6C'}, 'value': {'M': {'result': {'N': u'0.1129'}, 'lastupdatedtime': {'S': '2019-06-20'}}}}}}
{'PutRequest': {'Item': {'id': {'S': '59D40'}, 'value': {'M': {'result': {'N': u'0.00129'}, 'lastupdatedtime': {'S': '2019-06-20'}}}}}}
{'PutRequest': {'Item': {'id': {'S': 'A2A9'}, 'value': {'M': {'result': {'N': u'0.05129'}, 'lastupdatedtime': {'S': '2019-06-20'}}}}}}]}
我試過這個代碼:
from itertools import islice
list =[]
with open('output_of_json.json', 'r') as infile:
lines_gen = islice(infile, 25)
for line in lines_gen:
list.append(line)
無法越過文件的前 25 行
這可以做成一個函數。 這在邏輯上就是你想要的。 您可以使用 enumerate 來清理它。
with open(filename,'r') as f:
counter = 25
iteration = -1
out_dict = {}
for i in f.readlines():
if counter == 25:
if out_dict[iteration]:
# append your list
out_dict[iteration].append('string here')
counter = 0
iteration += 1
# create new instance and pre-pend
out_dict[iteration] = ['string here']
out_dict[iteration].append(i)
看看grouper
在功能itertools食譜。
import itertools
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return itertools.zip_longest(*args, fillvalue=fillvalue)
from itertools import islice
list =[]
with open('output_of_json.json', 'r') as infile:
lines_gen = grouper(infile, 25, fillvalue='')
for line in lines_gen:
# whatever you want to do
請注意,如果最后一行行少於 25 行,則該代碼將用空行填充 25 行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.