>>> import random
>>>
>>> def g(start=1, end=1000000):
... n = random.randint(start, end - 1)
... return (n % 2 == 0 and n) or n + 1
...
>>> [g() for _ in range(10)]
[841196, 137368, 240392, 14588, 431038, 737926, 203080, 678028, 694386, 154716]
>>>
>>> [g(5, 20) for _ in range(10)]
[14, 10, 8, 8, 18, 8, 6, 14, 12, 12]
>>> [g(5, 20) for _ in range(10)]
[10, 16, 18, 6, 18, 8, 10, 8, 8, 14]
>>>
>>> [g(6, 20) for _ in range(10)]
[18, 6, 18, 6, 20, 8, 10, 16, 12, 16]
>>>
>>> import datetime
>>>
>>> date_time = datetime.datetime.now()
>>> date_time_2000 = date_time.replace(year=date_time.year + 2000)
>>> date_time.strftime("%Y-%m-%d %H:%M:%S")
'2017-02-26 17:55:44'
>>> date_time_2000.strftime("%Y-%m-%d %H:%M:%S")
'4017-02-26 17:55:44'
>>>
import itertools
with open('file.txt', encoding='utf-8') as fin:
for line in itertools.islice(fin, 0, None, 2):
print(line, end='')
>>> import lxml.html
>>>
>>> s = """<input type="hidden" name="Sample" value="0">"""
>>>
>>> node = lxml.html.fromstring(s)
>>> node
<InputElement b74340ec name='Sample' type='hidden'>
>>> node.attrib
{'type': 'hidden', 'name': 'Sample', 'value': '0'}
>>>
Начал изучать Python, следующим на очереди Django.
Что посоветуете для более-менее быстрого парсинга такого файла?
Как оказалось, важное замечание: этот файл мы не сами редактируем, его присылает другая организация (государственная) изменить его формат невозможно.
Казалось бы легко -
>>> import re
>>>
>>> s = 'Some random string , Round A 1 day - Trip'
>>>
>>> match = re.search(r'^(.+) , (\S+ \S+) (.+) - (.+)$', s)
>>> match.groups()
('Some random string', 'Round A', '1 day', 'Trip')
>>>
>>> def read_blocks(fname, block_size):
... with open(fname, 'rb') as fin:
... while True:
... data = fin.read(block_size)
... if data:
... yield data
... else:
... break
...
>>> out = read_blocks('/etc/passwd', 8)
>>>
>>> list(out)[:5]
[b'root:x:0', b':0:root:', b'/root:/b', b'in/bash\n', b'bin:x:1:']
>>>
>>> out = read_blocks('/etc/passwd', 10)
>>>
>>> list(out)[:5]
[b'root:x:0:0', b':root:/roo', b't:/bin/bas', b'h\nbin:x:1:', b'1:bin:/bin']
>>>
В Python есть прекрасная функция dir(). Она показывает, какие методы/функции можно преминить к нашему объекту.
Все файлы .py одинаковые, менять заголовок не хочется.
>>> dicts = {'0000000876': {'FullName': 'Сисин Алексей Александрович',
... 'Department': 'Фармацевтический склад'},
... '0000000152': {'FullName': 'Возягин Павел Константинович',
... 'Department': 'Инженерный отдел'},
... '0000000103': {'FullName': 'Зайцев Александр Александрович',
... 'Department': 'Коммерческая дирекция'},
... '0000001015': {'FullName': 'Кочетов Николай Васильевич',
... 'Department': 'Транспортно-хозяйственный отдел'}}
>>>
>>> for d in dicts.values():
... print(d['FullName'])
...
Кочетов Николай Васильевич
Зайцев Александр Александрович
Сисин Алексей Александрович
Возягин Павел Константинович
>>>
>>> lst = [{'n': 0}, {'n': 1}]
>>>
>>> next(filter(lambda i: i['n'] == 1, lst), None)
{'n': 1}
>>> next(filter(lambda i: i['n'] == 5, lst), None)
>>>
>>> lst = [{'n': 0}, {'n': 1}]
>>>
>>> next((i for i in lst if i['n'] == 1), None)
{'n': 1}
>>> next((i for i in lst if i['n'] == 5), None)
>>>
>>> import string
>>> import random
>>>
>>> def gen_random_chars(nrandchars):
... alpha = string.ascii_uppercase + string.digits
... chars = ''.join(random.choice(alpha) for _ in range(nrandchars))
... return chars
...
>>> def gen_name(prefix):
... return prefix + gen_random_chars(4)
...
>>> for i in range(10):
... gen_name('abcd')
...
'abcdZ5VK'
'abcdT8V4'
'abcdJJCN'
'abcd92IQ'
'abcdW0QP'
'abcdNQLB'
'abcdQ1WS'
'abcdF8SG'
'abcd7WB1'
'abcdA3X3'
>>>