Попробуйте:
import re
data = [
"word1 word2 0.1111 hyp1 hyp2 0.1111111111111111",
"word3 word4 0.2 hyp3 hyp4 0.07692307692307693",
"word5 word6 0.2 hyp5 hyp6 0.3333333333333333"]
pattern = r"^(\S+\s\S+\s\d+.\d+)\s(\S+\s\S+\s\d+.\d+)$"
pairs = []
for line in data:
match = re.match(pattern, line)
pairs.append(match.group(1).split())
pairs.append(match.group(2).split())
for pair in pairs:
print(pair)
print("======")
pairs.sort( key=lambda value: float(value[2]))
for pair in pairs:
print(pair)
Вывод:
['word1', 'word2', '0.1111']
['hyp1', 'hyp2', '0.1111111111111111']
['word3', 'word4', '0.2']
['hyp3', 'hyp4', '0.07692307692307693']
['word5', 'word6', '0.2']
['hyp5', 'hyp6', '0.3333333333333333']
======
['hyp3', 'hyp4', '0.07692307692307693']
['word1', 'word2', '0.1111']
['hyp1', 'hyp2', '0.1111111111111111']
['word3', 'word4', '0.2']
['word5', 'word6', '0.2']
['hyp5', 'hyp6', '0.3333333333333333']
После сортировки вы можете записать эти данные в файл:
with open('new_file_name', 'w') as new_file:
for pair in pairs:
new_file.write(' '.join(pair))