Найдите слова в списке, затем удалите слово и любые другие завершающие слова в столбце

Простой совет: простое пространство (или невидимый специальный символ) в вашем скрипте, прямо перед самым первым тегом <?php, может вызвать это! Особенно, когда вы работаете в команде, а кто-то использует «слабую» IDE или перепутал файлы со странными текстовыми редакторами.

Я видел эти вещи;)

2
задан newtoCS 13 July 2018 в 07:47
поделиться

4 ответа

Используйте split всеми связанными значениями | для regex OR и выберите сначала list s на str[0]:

remove_words = ['stack', 'over', 'flow']

#for more general solution with word boundary
pat = r'\b{}\b'.format('|'.join(remove_words))
df['col'] = df['col'].str.split(pat, n=1).str[0]
print (df)
              col
0  abc test test 
1     cde test12 
2         def123 
3            yup 
2
ответ дан jezrael 17 August 2018 в 13:24
поделиться

Я не писал в pandas dataframe, но концерт должен быть одним и тем же на любом языке, просто перебирать все слова и использовать метод replace с пустой строкой.

0
ответ дан Mendy Kahan 17 August 2018 в 13:24
поделиться

Первым шагом было бы проверить, имеет ли вход значение в нем, если нет, вы можете просто вернуть весь вход

if "stack" or "over" or "flow" not in input: 
    return input

Теперь для удаления части. Я думаю, что лучший способ сделать это - перебрать каждое значение во входном массиве (я предполагаю, что это массив) и вызвать str_replace

0
ответ дан Rishabh Mandayam 17 August 2018 в 13:24
поделиться
remove_words = ['stack', 'over', 'flow']
inputline = "abc test test stack yxz"
for word in inputline.split(" "):
    if word in remove_words:
       print(inputline[:test.index(word)])

Это разделит ввод строки в список, затем найдет индекс любых слов в списке remove_words и вырезает остальную часть списка. Просто нужно сделать цикл, чтобы заменить строку хардкора для всего набора данных.

0
ответ дан Tom Dee 17 August 2018 в 13:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: