У меня есть TXT-файл с большим количеством информации, но мне нужны только цифры из « Средняя абсолютная ошибка» и « Корневая средняя квадратная ошибка». Как я могу автоматизировать и извлечь числа и положить их в таблицу Excel.

Любая помощь приветствуется. Командная строка, скрипт, Java, регулярные выражения, Powershell ...
Я использую Windows 8.1

Слушайте, это небольшая часть моего файла .txt:

#############################################################################################################
Recommendation Type: ClusterBasedRecommendation (Experiment 1) for User 1 based on 2 friends: 
     Friends: 9, 220
     Distance: normal
     distThreshold: 0.0 / support weight: 0.35 / relevance weight: 0.65
     Highest predicted rating: 0.87 / Lowest predicted rating: 0.0
     Mean Absolute Error: 0.1516666666666667 / Root Mean Squared Error: 0.1552149047825842
     Fetching friends: 16ms  / Computing distances: 0ms  / Filtering friends: 0ms  / Calculate Recommendations: 15ms  / Overall: 31ms 
    Kendall Tau : 
#############################################################################################################
#############################################################################################################
Recommendation Type: ClusterBasedRecommendation (Experiment 1) for User 2 based on 3 friends: 
     Friends: 22, 182, 310
     Distance: normal
     distThreshold: 0.0 / support weight: 0.35 / relevance weight: 0.65
     Highest predicted rating: 1.0 / Lowest predicted rating: 0.0
     Mean Absolute Error: 0.15166666666666664 / Root Mean Squared Error: 0.16581448804143878
     Fetching friends: 1ms  / Computing distances: 0ms  / Filtering friends: 0ms  / Calculate Recommendations: 0ms  / Overall: 1ms 
    Kendall Tau : 
#############################################################################################################
#############################################################################################################
Recommendation Type: ClusterBasedRecommendation (Experiment 1) for User 3 based on 2 friends: 
     Friends: 20, 98
     Distance: normal
     distThreshold: 0.0 / support weight: 0.35 / relevance weight: 0.65
     Highest predicted rating: 0.87 / Lowest predicted rating: 0.0
     Mean Absolute Error: 0.07 / Root Mean Squared Error: 0.07826237921249264
     Fetching friends: 0ms  / Computing distances: 0ms  / Filtering friends: 0ms  / Calculate Recommendations: 0ms  / Overall: 0ms 
    Kendall Tau : 
#############################################################################################################
#############################################################################################################

2 ответа2

2

Вот непрограммное решение ... Вставить текст в одну колонку в Excel Авто-фильтр - текст , который содержит "Mean Absolute Error" и с тех пор число вы ищете в одной и той же линии , вы будете остается только информация , что вам нужно , то вы можете используйте мастер преобразования текста в столбец, чтобы уменьшить до чисел.

Это займет несколько шагов вручную, но если вам не нужно это автоматизировать, то вы должны сделать это в течение минуты или двух.

1

Вот решение VBA.

Инструкции: вставьте свой текст в столбец A и запустите этот код VBA.

Sub ParseData()

Dim counter As Long
counter = 2

For Each cell In Range("A1", Range("A1").SpecialCells(xlCellTypeLastCell))

    If Left(Trim(cell), 19) = "Mean Absolute Error" Then
        Cells(counter, 3) = Mid(cell, InStr(1, cell, ":") + 1, InStr(1, cell, "/") - InStr(1, cell, ":") - 1)

    End If

    If InStr(1, cell, "Root Mean Squared Error:") > 0 Then
        Cells(counter, 4) = (Mid(cell, InStr(1, cell, "Root Mean Squared Error:") + 25, 30))
    counter = counter + 1
    End If

Next

End Sub

Предупреждение: имейте в виду ограничение десятичной точности Excel, потому что оно обрезает его после 11 десятичных знаков.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .