2013-05-08 5 views
5

Bazı verileri ondalık noktalar yerine 'p' s ile basan bir program ve ayrıca bazı bilgilerim var. 'p' s'yi '.' s ile değiştirmeye çalışıyordum. program tarafındanPython - 'p' ile bir sayı (4p5) 'ile nasıl değiştirilir. (4p5-> 4.5)?

Örnek çıkışı:

out_info = 'value is approximately 34p55' 

Ben bunu değiştirmek istiyorum: Ben dizi ayıklamak ve . ile p yerine re.search kullanarak çalıştı

out_info_updated = 'value is approximately 34.55' 

ama takmayı Geri bir sorun olur. O işi yapacak re.sub için kullanılacak desen anlayamadım. Herkes yardım edebilir mi? İşte

cevap

13

gitmek:

import re 
out_info = "value is approximately 34p55" 
re.sub(r'(\d+)p(\d+)', r'\1.\2', out_info) 

çıktısı: teker

"Bir p ardından bir veya daha fazla rakam, arayın diyor

'value is approximately 34.55'

izledi veya daha fazla sayı girin, sonra tüm sayıları ilk basamak kümesiyle değiştirin, ardından . ve ardından ikinci basamak kümesiyle değiştirin. "

+1

'(\ d) p (\ d)' yeterli olur ve çok daha hızlıdır (yalnızca rastgele floatlardan oluşan bir dizeyle zamanladım ve daha basit regex 8 kat daha hızlıdır). –

İlgili konular