Za parsowanie xml regexpami w jezyku innym niz perl - powinno sie kastrowac, coby geny glupoty dalej sie nie propagowaly.
Jesli ma to dzialac szybko - poczytaj o SAX, powinienes sie przeiterowac po dokumencie sprawdzajac ktory element ma atrybut name z wartoscia rowna softversion. w przypadku uzycia
lxml - z elementu interesowac bedzie ciebie .text (tj. jego pierwsze 4 znaki).
Jesli moze byc nieco wolniej, ale "latwiejsze" -
http://lxml.de/tutorial.html#elementpath - wystarczy znalezc wyszukac po xpath:
with open("sciezka/do/pliku") as data:
root = etree.XML(data.read())
p = root.find(".//p/[@name='softversion']")
print(p.text()[:4])
czy jakos podobnie.
Jak juz chcesz baaaaardzo nieladnie po prostu wyszukujac "softversion", przeskakujac kilka znakow i na chama brac 4 kolejne (NIE POLECAM TAK ROBIC):
data='<ns0:p name="softversion">WCP34_2394_0250</ns0:p>'
tofind='softversion'
index_after_data=data.index(tofind) + len(tofind)
print(data[index_after_data + 2:index_after_data + 6])
Raz jeszcze powtorze - uzywanie do czegos takiego regexpow jest tylko i wylacznie glupie...