Ubuntu'daki sensors
yardımcı programının çıktısı için basit bir normal ifade ayrıştırıcısı yazıyorum. İşte ayrıştırma metin satırı bir örnek:(Unicode) derece sembolünü normal ifadelerle nasıl ayrıştırılabilir?
temp1: +31.0°C (crit = +107.0°C)
Ve burada ki (Python) eşleşecek şekilde kullanıyorum regex var:
temp_re = re.compile(r'(temp1:)\s+(\+|-)(\d+\.\d+)\W\WC\s+'
r'\(crit\s+=\s+(\+|-)(\d+\.\d+)\W\WC\).*')
Bu kod beklenen ve maçları işler olarak yukarıda verdiğim örnek metin. Ben gerçekten ilgilendiğim tek bit sayılardır, bu nedenle bu biraz:
+
veya
-
işareti eşleştirerek başlar ve
°C
eşleştirerek biter
(\+|-)(\d+\.\d+)\W\WC
.
Sorunuz, neden iki \W
(alfasayısal olmayan) karakterin neden bir yerine °
eşleşmesidir? Unicode'un benim için farklı olarak temsil edildiği sistemlerde kod kırılacak mı? Eğer öyleyse, nasıl taşınabilir yapabilirim?
"re.UNICODE" bayrağını deneyin – netvope
"re.UNICODE" bayrağı ile RE, "\ W \ WC" veya "\ WC" ile eşleşmiyor. Ya da seni yanlış anladım mı? – snim2
Ayrıca ssusius derece anlamına gelen bir _single_ karakter olan “' ℃ '” da var. Unicode Consortium'a teşekkürler! –