Python: str.split () с пробелами выдает ошибку индекса - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь проверить правильность номеров телефонов в кадре данных.

В частности, я хочу проверить, содержит ли номер телефона пробелы: - Если ДА, а первая часть длиннее 6 персонажи, я хочу удалить вторую часть; если длина не 6 символов, я хочу удалить пробел - если НЕТ, продолжайте

Это мой код:

print(np.where(
    offline.PHONE_NUMBER.notnull(), 
        np.where(offline.PHONE_NUMBER.str.contains(" ", regex = False),
            np.where(offline.PHONE_NUMBER.str.split(expand = True)[1] != 'None',
                     np.where(offline.PHONE_NUMBER.str.split(expand = True)[0].str.contains(r".{6,}", regex = True),
             offline.PHONE_NUMBER.str.split(expand = True)[0], offline.PHONE_NUMBER.str.replace(r" ", "")), 
                     offline.PHONE_NUMBER), offline.PHONE_NUMBER), offline.PHONE_NUMBER))

, и он выдает мой IndexError: list index вне диапазона.

Я знаю из предыдущих вопросов, что str.split () может выдавать ошибку, если ожидаемый символ не содержится в строке, но я подумал, что при проверке нулевых значений и offline.PHONE_NUMBER.str.contains ( "", regex = False) Я мог бы избежать этой проблемы.

Вы можете мне помочь? Чего мне не хватает?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

Это дает ошибку в строке 4? Это может произойти из-за пробела в конце - 123456_ будет разделен не на два, а на один. Попробуйте использовать встроенный метод python .strip (), чтобы сначала удалить начальные и конечные пробелы.

0 голосов
/ 24 апреля 2020

Индекс вне диапазона от split () означает, что вы пытаетесь получить доступ к тому, что не было разделено. Вместо:

offline.PHONE_NUMBER.str.split(expand = True)[1] != 'None'

попробуйте что-то вроде:

len(offline.PHONE_NUMBER.str.split(expand = True))>1

Теперь, почему это не делает раскол? Нам нужно посмотреть данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...