我有一个包含大量信息的 .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 中的单个列中 自动过滤- 文字包含“平均绝对误差”,因为你正在寻找的数字在同一行,所以你只剩下你需要的信息,然后你可以使用将文本转换为列向导将其分解为数字。
它需要几个手动步骤,但如果您不需要自动化,那么您应该在一两分钟内完成。