我尝试从一个网址下载一个csv文件,读取它并通过HTML将它的数据转换成可视化,所以基本上是一个ETL过程。然而,我正在努力平均数据并得到一个结果。
我试着用Console.WriteLine检查平均值,但它是NaN,所以要么是平均数据要么是阅读数据有问题。
有谁能帮我指出问题可能出在哪里?
using System;
using System.Net;
using System.IO;
using System.Linq;
namespace ETL
{
class Program
{
static void Main(string[] args)
{
string url = "https://www.file-upload.net/download-15071709/data.csv.html";
WebClient client = new WebClient();
string data = client.DownloadString(url);
string fileName = "one.csv";
File.WriteAllText(fileName, data);
string[] lines = File.ReadAllLines(fileName);
double sum = 0;
int count = 0;
foreach (string line in lines)
{
string[] values = line.Split(',');
if (values[0] == "Strom")
{
sum += double.Parse(values[1]);
count++;
}
}
double average = sum / count;
string html = $"<html><body><p>Average power consumption is: {average}</p></body></html>";
File.WriteAllText("index.html", html);
}
}
}
提前感谢您的任何帮助!:D
1条答案
按热度按时间uurv41yg1#
您的代码实际上是正确的,但URL不是CSV文件的下载链接。因此,您正在解析Web表单。换句话说:原始HTML代码。
我用
https://filesamples.com/samples/document/csv/sample4.csv
尝试了你的代码,它正确地返回了CSV。