我正在尝试将包含单个有向图的GraphML文件读入Haskell Data.Graph,以便使用该Math.Combinatorics.Graph模块运行分析.
但是,我找不到任何允许我读取GraphML文件的模块,生成一个Data.Graph.我找到的一个相关模块是ForSyDe.Backend.GraphML.然而,这似乎是特定于ForSyDeDSL的,我目前无法想到用它来阅读普通的方法Data.Graph.
你能指点我一个允许我阅读GraphML的库,最好是一些关于如何使用它的示例代码吗?
想象一下,我有一个numpy数组,我需要找到条件为True的跨度/范围.例如,我有以下数组,其中我试图找到项大于1的跨度:
[0, 0, 0, 2, 2, 0, 2, 2, 2, 0]
Run Code Online (Sandbox Code Playgroud)
我需要找到索引(开始,停止):
(3, 5)
(6, 9)
Run Code Online (Sandbox Code Playgroud)
我能够实现的最快的事情是制作一个布尔数组:
truth = data > threshold
Run Code Online (Sandbox Code Playgroud)
然后使用numpy.argmin和循环遍历数组并numpy.argmax查找开始和结束位置.
pos = 0
truth = container[RATIO,:] > threshold
while pos < len(truth):
start = numpy.argmax(truth[pos:]) + pos + offset
end = numpy.argmin(truth[start:]) + start + offset
if not truth[start]:#nothing more
break
if start == end:#goes to the end
end = len(truth)
pos = end
Run Code Online (Sandbox Code Playgroud)
但是对于数组中的数十亿个位置来说这已经太慢了,而且我发现的跨度通常只是连续几个位置.有谁知道找到这些跨度的更快的方法?
假设这个YAML(保存在一个名为的文件中users.yml):
- id: 1
name: Unknown user
reputation: 0
- id: 2
name: Foo bar
reputation: 4
Run Code Online (Sandbox Code Playgroud)
而这个Haskell data类型:
data MyUser = MyUser {id :: Int,
name :: String,
reputation :: Int}
deriving (Show)
Run Code Online (Sandbox Code Playgroud)
我想使用yaml库将YAML读成a [MyUser].我怎样才能做到这一点?
使用以下命令运行此Haskell程序时runghc:
import Network.HTTP
main = simpleHTTP (getRequest "https://stackoverflow.com")
>>= getResponseBody >>= putStrLn
Run Code Online (Sandbox Code Playgroud)
我收到错误消息
printso.hs: user error (https not supported)
Run Code Online (Sandbox Code Playgroud)
我不想切换到未加密的HTTP - 我如何使用Network.HTTPSSL/TLS?
如何使用hamlet框架从Haskell内部生成静态HTML页面?
注意:这个问题故意不表示研究工作.对于我的研究工作,请参阅下面的问答式答案.
我想使用xml-conduit,特别Text.XML.Stream.Parse是为了从大型XML文件中懒惰地提取对象列表.
作为测试用例,我使用最近重新发布的StackOverflow数据转储.为了简单起见,我打算从中提取所有用户名stackoverflow.com-Users.7z.即使文件是a .7z,file说它只是bzip2压缩数据(文件末尾可能有一些7zip的东西,但是现在我不在乎).
XML的简化版本将是
<users>
<row id="1" DisplayName="StackOverflow"/>
...
<row id="2597135" DisplayName="Uli Köhler"/>
...
</users>
Run Code Online (Sandbox Code Playgroud)
基于此之前的Q&A以及实例上Hackage流读取示例XML在BZ2-ED形式的作品完美的我
但是,在使用runghc以运行以下程序时,它会在不打印任何输出的情况下运行:
{-# LANGUAGE OverloadedStrings #-}
import Data.Conduit (runResourceT, ($$), ($=))
import qualified Data.Conduit.Binary as CB
import Data.Conduit.BZlib
import Data.Conduit
import Data.Text (Text)
import System.IO
import Text.XML.Stream.Parse
import Control.Applicative ((<*))
data User = User {name :: Text} deriving (Show)
parseUserRow = tagName "row" (requireAttr "DisplayName" <* ignoreAttrs) $ …Run Code Online (Sandbox Code Playgroud) 我遇到java string.split方法的问题.
我有一个像这样的字符串,等于 - freshness|originality.然后我像这样拆分这个字符串:
String words[] = word.split("|");
Run Code Online (Sandbox Code Playgroud)
如果我然后输出单词[1],如下:
t1.setText(words[1]);
Run Code Online (Sandbox Code Playgroud)
它给了我价值f.我已经知道这是单词中的f freshness.
如何正确拆分字符串,实际上是单词[1] originality?谢谢您的帮助!
对于几个项目,我需要将长字符串嵌入到Haskell源代码中.
显而易见的方法是unlines使用行列表.但是,阅读和维护这一过程非常麻烦.
cCode :: String
cCode = unlines [
"int main(int argc*, char** argv)",
" doStuff();",
"}"]
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以嵌入字符串而没有任何开销(如上面显示的列表)甚至文件?TemplateHaskell/Quasi-quotation是走这里的方式吗?
注意:此问题以问答形式回答.因此,它没有显示任何研究工作.
使用wget,我需要下载一个URL包含年份的文件.如何嵌入当前的4位数年份(在运行命令时,例如2015)?例如,命令currentyear将在什么位置
wget "http://example.com/data-$(currentyear).txt"
Run Code Online (Sandbox Code Playgroud)
如果我需要两位数年份(例如2015年为15年),相应的命令会是什么?
使用此代码定义计算日出和日落的时间点:
t0 = ts.utc(2018, 9, 12, 4)
t1 = ts.utc(2018, 9, 13, 4)
Run Code Online (Sandbox Code Playgroud)
如果我只想使用一个(开始)日期并将下一个日期设置为恰好一天之后怎么办?我不能只在day论点中添加一个,因为这在月底是不正确的。
使用 Pythondatetime我可以使用
from datetime import datetime, timedelta
datetime(2019, 1, 31, 12) + timedelta(days=1)
# datetime.datetime(2019, 2, 1, 12, 0)
Run Code Online (Sandbox Code Playgroud)
但我timedelta在 Skyfield API 文档中找不到任何类似的内容。