我需要读取ASCII文件中的数据,其中缺失值为NA。使用textscan(...)似乎不起作用,因为textscan(...)似乎在第一次出现NA时停止读取/解析。
以下是该问题的简单演示:
x = textscan ( "1 ; 2 ; 3\n4 ; NA ; 6" , '%d %d %d' , 'Delimiter' , ';' , 'TreatAsEmpty' , 'NA' , 'ReturnOnError' , false )
error: textscan: Read error in field 2 of row 2
我还试图告诉textscan(...)将NA解释为"空值",但没有运气:
public string UrlLengthen(string url)
{
string newurl = "";
bool redirecting = true;
while (redirecting)
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(newurl);
request.AllowAutoRedirect = false;
request.UserAgent = "Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.2)";
//this user agent is providing results for short urls
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string uriString = response.GetResponseHeader("location");
if ((int)response.StatusCode == 301 || (int)response.StatusCode == 302)
{
uriString = response.Headers["Location"];
//Log.Debug("Redirecting " + newurl + " to " + uriString + " because " + response.StatusCode);
newurl = uriString;
// and keep going
}
else
{
// Log.Debug("Not redirecting " + url + " because " + response.StatusCode);
redirecting = false;
}
newurl = uriString;
}
catch (Exception ex)
{
ex.Data.Add("url", newurl);
// Exceptions.ExceptionRecord.ReportWarning(ex); // change this to your own
redirecting = false;
}
}
return sb.ToString();
}
有人可以解释一下发生了什么,或者如何使其发挥作用?
请注意,这只是一个简单的例子来说明问题。我文件中的数据格式有点复杂,我真的依赖textscan(...)来解析它;我不认为我可以轻松地做到没有文本扫描(...)。
(我正在运行Octave 4.2.1。)
答案 0 :(得分:1)
NA
是针对浮点数定义的,因此您应使用'%f'
转换说明符而不是'%d'
。
x = textscan ( "1 ; 2 ; 3\n4 ; NA ; 6" , '%f %f %f' ,
'Delimiter' , ';' , 'ReturnOnError' , false )