簡體   English   中英

如何用python刪除字母[AZ]

[英]How to delete letters [A-Z] with python

我想從字符串中刪除字母並保存從這些行中刪除的變量,如下所示:

輸入 =

1.785K

10MEG

999.1V

預期的 :

Value = 1.785
Units detected = K

Value = 10
Units detected = MEG

Value = 999.1
Units detected = V

我嘗試使用此代碼但不起作用

list = ['1.785K','10MEG','999.1V']
for l in list:
  l.replace("[A-Z]", "")
  print("Value =" + l) 
  print("Units detected =" )

因為看起來你的單位總是在最后,你可以避免使用正則表達式而只使用str.rstrip

它刪除可以作為包含要刪除的所有字符的字符串提供的字符后綴。 模塊string定義了包含所有 AZ 字符的ascii_uppercase

至於獲取刪除的字符,您可以使用剝離字符串的長度對原始字符串進行切片並准確獲取刪除的字符

嘗試這個:

from string import ascii_uppercase

list = ['1.785K','10MEG','999.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 = '''1.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))

輸出:

[('1.785', 'K')]
[('10', 'MEG')]
[('999.1', 'V')]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM