从文本文件中提取特定数据并将其导入 Excel

从文本文件中提取特定数据并将其导入 Excel

我有一个包含大量信息的 .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 : 
#############################################################################################################
#############################################################################################################

答案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 位将其截断。

答案2

这是一个非编程解决方案...将文本粘贴到 Excel 中的单个列中 自动过滤- 文字包含“平均绝对误差”,因为你正在寻找的数字在同一行,所以你只剩下你需要的信息,然后你可以使用将文本转换为列向导将其分解为数字。

它需要几个手动步骤,但如果您不需要自动化,那么您应该在一两分钟内完成。

相关内容