在USQL中,我正在阅读CSV文件。它是遥测数据,因此CSV文件可能具有任何不良数据。我正在阅读该CSV文件并在USQL中创建局限。我想从JSON对象的所有值中替换无效的字符,以使我的脚本不会因为不良数据而失败。我想生成JSON输出。
我正在考虑在创建JObject
之前用空白替换"\"
和"""
。请让我知道这是否是删除不良数据的正确方法。如果有人有更好的解决方案,请告诉我。除了" "one_answers" "外,我还需要删除其他任何字符。我的USQL代码如下 -
@Data=
SELECT new JObject(
new JProperty("Name", Name),
new JProperty("Description", Description)
).ToString() AS Document
FROM @InputData;
这就是我的方式。这将构建您的数据表,然后使用JSON.NET,这将为您序列化,您只需要构建一个正则表达式即可找到并替换要删除的内容。
void Main()
{
var dt = CSVtoDataTable(@"c:temptest.csv");
foreach (DataRow row in dt.Rows)
foreach (DataColumn col in dt.Columns)
{
var str = row[col].ToString();
row[col] = RegexReplace(str);
}
string json = JsonConvert.SerializeObject(dt);
}
public DataTable CSVtoDataTable(string filepath)
{
DataSet ds = new DataSet("Temp");
using (OleDbConnection conn = new OleDbConnection($"Provider=Microsoft.Jet.OleDb.4.0; Data Source = {Path.GetDirectoryName(filepath)}; Extended Properties = "Text;HDR=YES;FMT=Delimited""))
{
conn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM " + Path.GetFileName(filepath), conn);
adapter.Fill(ds);
}
return ds.Tables[0];
}
public string RegexReplace(string s)
{
return Regex.Replace(s, @"b[a-z]w+", "*****");
}