Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何调用需要带“的字符串”的函数;引号;?_Python_String_Wolfram Mathematica_Raspberry Pi - Fatal编程技术网

Python 如何调用需要带“的字符串”的函数;引号;?

Python 如何调用需要带“的字符串”的函数;引号;?,python,string,wolfram-mathematica,raspberry-pi,Python,String,Wolfram Mathematica,Raspberry Pi,我正试图在Mathematica上编写一个小脚本,用它绘制我使用Python获得的一组特定数据。 数据输出如下: 它是一个标准的datetime对象,正在回显到tsv文件中 2014-03-29 08:39:37.080834 04 0.403980970383 0.2 2014-03-29 08:39:39.449200 04 0.383723974228 0.2 2014-03-29 08:39:42.603058 04 0.475341081619 0.2 2014-03

我正试图在Mathematica上编写一个小脚本,用它绘制我使用Python获得的一组特定数据。 数据输出如下: 它是一个标准的datetime对象,正在回显到tsv文件中

2014-03-29 08:39:37.080834  04  0.403980970383  0.2
2014-03-29 08:39:39.449200  04  0.383723974228  0.2
2014-03-29 08:39:42.603058  04  0.475341081619  0.2
2014-03-29 08:39:44.882941  04  0.303984165192  0.2
2014-03-29 08:39:47.021998  04  0.312470912933  0.2
2014-03-29 08:39:48.951891  04  0.312346935272  0.2
第一列是datetime对象,时间和日期由空格分隔,而不是\t。接下来的3列是用a\t分隔的,但与手头的问题无关(尽管如果有人感兴趣,我很乐意告诉他们它们的意思)

所以我要做的是将第一列导入Mathematica,这样我就可以将第一列和第二列(即日期和时间(x轴)与04s(y轴,表示事件))进行图形化。 为此,我做了以下工作:

data = Import["/home/pi/Desktop/data.tsv"]
dates = data[[;;,1]]
DateList[dates]
但最后一行是我出错的地方。我知道一个事实,如果我调用DateList函数,并在“引号”中给它一个日期对象,它会工作,但由于某些原因,这些字符串不在引号中,它会返回一个错误。该错误表示无法将输入解释为日期或时间输入

我尝试过使用DateList[dates//InputForm[%]之类的东西,但仍然不起作用

请帮助我理解Mathematica中字符串是如何工作的!:)


美联储

我对mathematica没有任何经验,但应该很容易确保每个日期都有引号:

data = Import["/home/pi/Desktop/data.tsv"]
dates = data[[;;,1]]
dates = ['"' + date + '"' for date in dates]
DateList[dates]

仅供参考,我假设
日期中的每个日期都是一个字符串。

日期的字符串格式包括“-”和“:”。Datelist的文档声称您应该能够给它一个格式字符串,并让它从字符串中提取日期,但多次尝试都失败了。仔细研究文档的细节,看看是否可以为它提供一种有效的字符串格式。或者只是做一点字符串黑客和提取您自己的字段和完成它

In[1]:= data = Import["data.tsv"];
dates = data[[;; , 1]];
fixeddates = Map[ToExpression["{" <> StringReplace[#,
   {"-" -> ",", " " -> ",", ":" -> ","}] <> "}"] &, dates]

Out[3]= {{2014, 3, 29, 8, 39, 37.0808}, {2014, 3, 29, 8, 39, 39.4492},
   {2014, 3, 29, 8, 39, 42.6031}, {2014, 3, 29, 8, 39, 44.8829},
   {2014, 3, 29, 8, 39, 47.022}, {2014, 3, 29, 8, 39, 48.9519}}
但事实并非如此

In[19]:= DateList[{"2014-03-29 08:39:48.951891", {"Year", "-", "Month",
   "-", "Day", " ", "Hour", ":", "Minute", ":", "Second"}}]

During evaluation of In[19]:= DateString::str: String 2014-03-29 08:39:48.951891 cannot be interpreted as a date in format {Year,-,Month,-,Day, ,Hour,:,Minute,:,Second}. >>

Out[19]= DateList[{"2014-03-29 08:39:48.951891", {"Year", "-", 
 "Month", "-", "Day", " ", "Hour", ":", "Minute", ":", "Second"}}]
因此,Datelist将提取整数秒,而不是实际秒,即使文档中说“天、小时、分钟和秒的值可以是非整数:”

除非其他人能提出一个很好的解释,看起来真的像个bug

显示如何绘制数据的编辑

data = Import["data.tsv"];
points = data[[All, {1, 3}]]; (*extract date and 3rd column*)
fixedpoints = Map[{ToExpression["{" <> StringReplace[First[#],
   {"-" -> ",", " " -> ",", ":" -> ","}] <> "}"], Last[#]} &, points];
DateListPlot[fixedpoints, PlotStyle -> PointSize[0.02]]

...PlotSnipped...
data=Import[“data.tsv”];
点=数据[[全部,{1,3}]];(*提取日期和第三列*)
fixedpoints=Map[{ToExpression[“{”StringReplace[First[#],
{“-”->“,”,“->”,“,”:“->”,“}]“}”],最后一个[#]}&,点];
DateListPlot[固定点,打印样式->点大小[0.02]]
…被剪掉了。。。

这非常有趣!非常感谢你!如何绘制数据??我尝试调用DatePlotList函数,但它仍然只返回数字列表。我认为需要将它们放在日期列表对象中。我想我会尝试将秒截断为整数秒。但我仍然不知道如何在数字周围加引号……这太棒了!它起作用了!这正是我想做的。由于某种原因,我无法将这两个列表以这样一种方式组合起来,即你是你有{{{年,月,日},事件}我不知道怎么做。再次感谢!!!以防万一你真的不需要Mathematica:你知道python可以自己绘制这样的数据,对吗?有关示例,请参见。(如今,除了一些符号数学,没有理由使用Mathematica进行任何事情,偶尔也会使用Mathematica的策划数据,除非你的老板/教授让你使用它。)
data = Import["data.tsv"];
points = data[[All, {1, 3}]]; (*extract date and 3rd column*)
fixedpoints = Map[{ToExpression["{" <> StringReplace[First[#],
   {"-" -> ",", " " -> ",", ":" -> ","}] <> "}"], Last[#]} &, points];
DateListPlot[fixedpoints, PlotStyle -> PointSize[0.02]]

...PlotSnipped...