Рассмотрим несколько практических применений операций разбиения и объединения строк. Во многих областях довольно часто возникает необходимость просмотра файлов по колонкам. Допустим, например, что имеется вывод какой-то системы в файл в виде колонок чисел и требуется сложить числа в каждой колонке. В Python эту задачу можно решить с помощью операции разбиения строк, как показано в примере 19.1. Python предоставляет также дополнительный бонус, позволяя сделать это решение инструментом многократного пользования, оформив его в виде доступной для импортирования функции.
Пример 19.1. PP4E\Lang\summer.py
#!/usr/local/bin/python
if __name__ == ‘__main__’: import sys print(summer(eval(sys.argv[1]), sys.argv[2])) # ‘% summer.py cols file’
Обратите внимание, что здесь для чтения строк мы использовали итератор файла вместо явного вызова метода readlines (в главе 4 говорилось, что итераторы файлов позволяют избежать необходимости загружать файл в память целиком). Сам файл является временным объектом, который будет автоматически закрыт сборщиком мусора.
C:\…\PP4E\Lang> type table1.txt
1 5 10 2 1.0
2 10 20 4 2.0
3 15 30 8 3
4 20 40 16 4.0
C:\…\PP4E\Lang> python summer.py 5 table1.txt [10, 50, 100, 30, 10.0]
Обратите также внимание, что так как сценарий суммирования использует функцию eval для преобразования текста из файла в числа, то в файле можно было бы хранить произвольные выражения на языке Python:
C:\…\PP4E\Lang> type table2.txt
2 1+1 1<<1 eval("2")
16 2*2*2*2 pow(2,4) 16.0
3 len(‘abc’) [1,2,3][2] {‘spam’:3}[‘spam’]
C:\…\PP4E\Lang> python summer.py 4 table2.txt [21, 21, 21, 21.0]
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011