www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Python3 для обработки текста

Дата публикации May 27, 2017

Python больше о «программировании как хакер», когда вы пишете свой код, еслиВы помните такие вещи, как подсчет ссылок, проверка типов, манипулирование данными, использование стеков, управление переменными, исключение использования списков, использование все меньшего и меньшего количества циклов for, которые действительно могут согреть ваш код для великолепно выглядящего кода и меньшего использования. CPU-ресурсов с большой скоростью.

Медленнее, чем С:

Да, Python медленнее, чем C, но вам действительно нужно спросить себя, что быстро или что вы действительно хотите сделать. Есть несколько способов написания Фибоначчи на Python. Наиболее популярным является тот, который использует «for loop» только потому, что большинство программистов из C-фона используют множество циклов for для итерации. В Python также есть циклы for, но если вы действительно можете избежать цикла for, используя внутренние циклы, предоставляемые Python Data Structures, и библиотеки, подобные Numpy, для обработки массивов. В большинстве случаев вы будете сталкиваться с Win-Win.

Теперь давайте рассмотрим некоторые трюки Python, которые очень круты, если вы тот, кто манипулирует, фильтрует, извлекает, анализирует данные большую часть времени в вашей работе.

В Python есть много встроенных методов обработки текста:

>>> m = ['i am amazing in all the ways I should have']>>> m[0]'i am amazing in all the ways I should have'>>> m[0].split()['i', 'am', 'amazing', 'in', 'all', 'the', 'ways', 'I', 'should', 'have']>>> n = m[0].split()>>> n[2:]['amazing', 'in', 'all', 'the', 'ways', 'I', 'should', 'have']>>> n[0:2]['i', 'am']>>> n[-2]'should'>>>>>> n[:-2]['i', 'am', 'amazing', 'in', 'all', 'the', 'ways', 'I']>>> n[::-2]['have', 'I', 'the', 'in', 'am']

Это использование списков для работы со строками. Да нет для петель.

Интересные части модуля Коллекции:

Теперь поговорим о коллекциях.

Счетчик просто мой личный фаворит.

Когда вам нужно просмотреть «БОЛЬШИЕ» списки и посмотреть, что на самом деле происходит:

from collections import Counter>>> Counter(xrange(10))Counter({0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1})>>> just_list_again = Counter(xrange(10))>>> just_list_again_is_dict = just_list_again>>> just_list_again_is_dict[1]1>>> just_list_again_is_dict[2]1>>> just_list_again_is_dict[3]1>>> just_list_again_is_dict['3']0Some other methods using counter:Counter('abraakadabraaaaa')Counter({'a': 10, 'r': 2, 'b': 2, 'k': 1, 'd': 1})>>> c1=Counter('abraakadabraaaaa')>>> c1.most_common(4)[('a', 10), ('r', 2), ('b', 2), ('k', 1)]>>> c1['b']2>>> c1['b'] # work as dictionary2>>> c1['k'] # work as dictionary1>>> type(c1)<class 'collections.Counter'>>>> c1['b'] = 20>>> c1.most_common(4)[('b', 20), ('a', 10), ('r', 2), ('k', 1)]>>> c1['b'] += 20>>> c1.most_common(4)[('b', 40), ('a', 10), ('r', 2), ('k', 1)]>>> c1.most_common(4)[('b', 20), ('a', 10), ('r', 2), ('k', 1)]

Аматематические и единичные операции:

>>> from collections import Counter>>> c1=Counter('hello hihi hoo')>>> +c1Counter({'h': 4, 'o': 3, ' ': 2, 'i': 2, 'l': 2, 'e': 1})>>> -c1Counter()>>> c1['x']0

Счетчик похож на словарь, но он также считает важным весь контент, который вы ищете. Таким образом, вы можете разместить материал на графиках.

OrderedDict:

это делает ваши куски данных значимым образом.

>>> from collections import OrderedDict
>>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
>>> new_d = OrderedDict(sorted(d.items()))
>>> new_d
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
>>> for key in new_d:
... print (key, new_d[key])
...
apple 4
banana 3
orange 2
pear 1

Namedtuple:

Думайте так, как вам нужно сохранить каждую строку вашего CSV в список строк, но при этом вам также нужно заботиться не только о памяти, но и о том, что вы должны иметь возможность хранить каждую строку как структуру данных словаря, так что если вы выбираете строки из документа Excel или CSV, который появляется, когда вы работаете в среде обработки данных.

# The primitive approach
lat_lng = (37.78, -122.40)
print 'The latitude is %f' % lat_lng[0]
print 'The longitude is %f' % lat_lng[1]# The glorious namedtuple
LatLng = namedtuple('LatLng', ['latitude', 'longitude'])
lat_lng = LatLng(37.78, -122.40)
print 'The latitude is %f' % lat_lng.latitude
print 'The longitude is %f' % lat_lng.longitude

ChainMap:

Это Контейнер Контейнеров: Да, это действительно так.

Вам лучше быть выше Python3.3, чтобы попробовать этот код.

>>> from collections import ChainMap>>> a1 = {'m':2,'n':20,'r':490}>>> a2 = {'m':34,'n':32,'z':90}>>> chain = ChainMap(a1,a2)>>> chainChainMap({'n': 20, 'm': 2, 'r': 490}, {'n': 32, 'm': 34, 'z': 90})>>> chain['n']20

# позвольте мне убедиться в одном, он не объединяет словари, а объединяет их.

>>> new_chain = ChainMap({'a':22,'n':27},chain)>>> new_chain['a']22>>> new_chain['n']27

постижения:

Вы также можете сделать понимание с помощью словарей или наборов, а также.

>>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}>>> m{'d': 4, 'a': 1, 'b': 2, 'c': 3}>>> {v: k for k, v in m.items()}{1: 'a', 2: 'b', 3: 'c', 4: 'd'}

Методы StartsWith и EndsWith для обработки строк:

Начинается с, заканчивается с.Все вещи имеют начало и конец. Часто нам нужно проверить начало и конец строк. Мы используем методы начальные и конечные.

phrase = "cat, dog and bird"# See if the phrase starts with these strings.
if phrase.startswith("cat"):
print(True)if phrase.startswith("cat, dog"):
print(True)# It does not start with this string.
if not phrase.startswith("elephant"):
print(False)OutputTrue
True
False

Карта и IMap как встроенные функции для итерации:

Карта перестраивается в Python3 с использованием выражений генераторов под капотом, что помогает сэкономить много памяти, но в Python2 карта использует словарь, как выражения, поэтому вы можете использовать модуль 'itertools' в python2, а в itertools имя функции карты изменяется на imap. ( из itertools импортируй имап)

>>>m = lambda x:x*x
>>>print m
at 0x7f61acf9a9b0>
>>>print m(3)
9# now as we understand lamda returns the values of expressions for various functions as well, one just have to look
# for various other stuff when you really takes care of other things>>>my_sequence = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
>>>print map(m,my_sequence)
[1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400]#so square is applied on each element without using any loop or if.

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map