Saya ingin mengekstrak hanya tanda dan angka dari data

Masukan: <70 (aze) , <0,03 (+) , >0.03 (+)
Keluaran: <70 , <0,03 , >0.03

Mencoba dengan re.sub tapi saya tidak bisa memilih tandanya

re.sub("\D", "", text)
1
ombk 12 Mei 2021, 13:13

1 menjawab

Jawaban Terbaik

Kamu bisa memakai

" , ".join(re.findall(r'[<>]?\d+(?:[.,]\d+)?', text))

Lihat demo regex. Detail:

  • [<>]? - opsional < atau >
  • \d+ - satu atau lebih digit
  • (?:[.,]\d+)? - kemunculan opsional . atau , dan kemudian satu atau lebih digit.

Lihat demo Python:

import re
text = '<70 (aze) , <0,03 (+) , >0.03 (+)'
print( " , ".join(re.findall(r'[<>]?\d+(?:[.,]\d+)?', text)) )
# => <70 , <0,03 , >0.03

Di Panda:

df['text'] = df['text'].str.findall(r'[<>]?\d+(?:[.,]\d+)?').str.join(' , ')
2
Wiktor Stribiżew 12 Mei 2021, 10:32