Как я могу удалить конкретное число из строки?

1

вот код:

aList = ['0.01', 'xyz', 'J0.01', 'abc', 'xyz'];
aList.remove('0.01');
print("List : ", aList)

вот результат: Список:

['xyz', 'J0.01', 'abc', 'xyz']

Как удалить 0.01, прикрепленный к "J0.01"? Я хотел бы сохранить J. Спасибо за ваше время! знак равно

  • 0
    звучит как работа для регулярных выражений
  • 0
    Вы используете метод remove списка. Вы хотите метод строки вместо
Показать ещё 1 комментарий
Теги:

3 ответа

3
Лучший ответ

Похоже, вы хотите

aList = ['0.01', 'xyz', 'J0.01', 'abc', 'xyz'];
>>> [z.replace('0.01', '') for z in aList]

['', 'xyz', 'J', 'abc', 'xyz']

Если вы хотите удалить также пустые строки/пробелы,

>>> [z.replace('0.01', '') for z in aList if z.replace('0.01', '').strip()]
['xyz', 'J', 'abc', 'xyz']
  • 0
    Downvoter хотите прокомментировать?
  • 1
    Ты удивительный! Большое спасибо! знак равно
Показать ещё 3 комментария
2

Использование модуля re:

import re

aList = ['0.01', 'xyz', 'J0.01', 'abc', 'xyz'];    
print([i for i in (re.sub(r'\d+\.?\d*$', '', i) for i in aList) if i])

Печать:

['xyz', 'J', 'abc', 'xyz']

РЕДАКТИРОВАТЬ:

Подстановка regexp re.sub(r'\d+\.?\d*$', '', i) будет заменять каждую цифру, за которой следует точка (необязательно), и за ней следует любое количество цифр для пустой строки. Значение $ означает, что цифра должна быть в конце строки.

Так. например, допустимы следующие соответствия: "0.01", "0." , "0". Объяснение на внешнем сайте здесь.

  • 0
    Спасибо большое за вашу помощь! Этот код работал отлично! знак равно
  • 0
    Можете ли вы добавить некоторые пояснения к сложному выражению в вашей print команды в интересах тех , кто новичок re , который включает меня
Показать ещё 1 комментарий
0

Что-то вроде этого может работать:

l = ['0.01', 'xyz', 'J0.01', 'abc', 'xyz']
string = '0.01'
result = []
for x in l :
    if string in x:
        substring = x.replace(string,'')
        if substring != "":
            result.append(substring)
    else:
        result.append(x)

print(result)

попробуйте, привет.

  • 0
    Работало отлично !!! Так что деньги !!!
  • 0
    … У меня есть список имен с 0,01, прикрепленным к каждому из них. Например: Обама, Барак0.01; Трамп, Дон0.01; и т.д. Когда я попытался использовать код, который вы предложили, он напечатал только фамилию в списке (например, Трамп, Дон). Любая идея, как я мог бы использовать этот код, чтобы удалить 0,01 от всех в списке? Этот код работал, как вы заявили. Я просто новичок и могу использовать некоторые указатели. Спасибо за ваше время! знак равно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню