Как удалить буквы [AZ] с python

Я хочу удалить буквы из строки и сохранить, который удаляется в переменной из этих строк, как показано ниже:

Вход =

1.785K

10MEG

999.1V

Ожидаемый:

Value = 1.785
Units detected = K

Value = 10
Units detected = MEG

Value = 999.1
Units detected = V

Я пытаюсь этот код, но не работает

list = [Ƈ.785K',ཆMEG',鰿.1V']
for l in list:
  l.replace("[A-Z]", "")
  print("Value =" + l) 
  print("Units detected =" )

Всего 3 ответа


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

Он удаляет суффикс символов, который может быть представлен в виде строки, содержащей все символы для удаления. string модуля определяет ascii_uppercase который содержит все символы AZ.

Что касается получения удаленных символов, вы можете использовать длину обрезанной строки, чтобы разрезать исходную строку и получить точно удаленные символы

попробуй это:

from string import ascii_uppercase

list = [Ƈ.785K',ཆMEG',鰿.1V']
for l in list:
  after_strip = l.rstrip(ascii_uppercase)
  stripped_chars = l[len(after_strip):]
  print("Value = " + l) 
  print("Units detected = " + stripped_chars)

Там вы идете:

Я решил это с помощью регулярных выражений

import re


input = ''Ƈ.785K

10MEG

999.1V
'''

for val,unit in re.findall('([0-9.]+)([A-Za-z]+)',input):
    print('Value : ',val)
    print('Units : ',unit)
    print()

Выход:

Value :  1.785
Units :  K

Value :  10
Units :  MEG

Value :  999.1
Units :  V

Ссылка на регулярное выражение:

https://regex101.com/r/DZIaUM/1


Вы можете использовать метод str translate чтобы избавиться от нежелательных символов

import string
t = str.maketrans('','',string.ascii_uppercase)
data = ["1.785K","10MEG","999.1V"]
for d in data:
    print(d.translate(t))

Выход:

1.785
10
999.1

maketrans принимает 3 аргумента, в этом случае сначала пустые 2, потому что нам нужно только удалить символы, а не заменить. Однако, так как вам нужны эти модули, я предлагаю использовать re следующим образом:

import re
data = ["1.785K","10MEG","999.1V"]
for d in data:
    print(re.findall(r'(.*?)([A-Z]+)',d))

Выход:

[(Ƈ.785', 'K')]
[(ཆ', 'MEG')]
[(鰿.1', 'V')]

Есть идеи?

10000