小编Ran*_*Rag的帖子

了解Haskell中的惰性求值

我正在努力学习Haskell,但我仍然坚持理解 lazy evaluation.有人可以详细解释我的懒惰评估和以下两个案例的输出[与解释]有关下面给出的

伪代码:

x = keyboard input (5)
y = x + 3 (=8)
echo y (8)
x = keyboard input (2)
echo y
Run Code Online (Sandbox Code Playgroud)

案例1:静态绑定,懒惰评估

案例2:动态绑定,懒惰评估.

echo y在上面的两种情况下,我需要知道最后一行()将要打印的内容.

haskell functional-programming lazy-evaluation

7
推荐指数
1
解决办法
1612
查看次数

从Windows上的PATH运行时Python脚本丢失参数

我知道我的标题不具有描述性,所以让我试着在这里解释一下.

通常我会像这样执行我的python脚本:

D:\github\Miscellaneous-Programs\Python>python check.py -h
hello
['check.py', '-h']
Run Code Online (Sandbox Code Playgroud)

现在我做的是D:\github\Miscellaneous-Programs\Python在我的windows path环境变量中添加文件夹.比我试图像这样执行我的脚本:

C:\Users\noob>check -h
hello
['D:\\github\\Miscellaneous-Programs\\Python\\check.py']
Run Code Online (Sandbox Code Playgroud)

如你所见,它没有显示-h我提供给它的论据.

我的 check.py

import sys
print "hello"
print sys.argv
Run Code Online (Sandbox Code Playgroud)

如果我print sys.argv从上面提到的python脚本中删除它在我上面提到的两种情况下工作正常,即它打印"你好"就好了.

所以,我的问题是如何在将脚本添加到环境变量后执行接受一些命令行参数的python脚本.

我的目的是python script在Windows命令提示符中的任何地方执行我,这有点类似于chmod +x check.py.

chmod在cygwin中尝试了这个选项,它适用于两种情况.

Cygwin output

noob@noob-PC ~
$ chmod +x check.py

noob@noob-PC ~
$ ./check.py h
['./check.py', 'h']
Run Code Online (Sandbox Code Playgroud)

python windows

7
推荐指数
2
解决办法
2188
查看次数

PyQt将SIGNAL连接到多个SLOT

我努力学习PyQt,从rapid gui programming with python and qt目前的学习SignalsSlots.

以下是我的代码的简短片段:

self.connect(self.dial, SIGNAL("valueChanged(int)"),self.spinbox.setValue) #1
self.connect(self.dial, SIGNAL("valueChanged(int)"),self.getValue_dial)    #2
self.connect(self.spinbox, SIGNAL("valueChanged(int)"),self.dial.setValue)
self.connect(self.spinbox, SIGNAL("valueChanged(int)"),self.getValue_spinbox)

def getValue_dial(self):
        print self.dial.value()

def getValue_spinbox(self):
        print self.dial.value()
Run Code Online (Sandbox Code Playgroud)

我想在这里实现的是呼叫2在插槽一次是spinbox.setValuegetValue_dialdial对象,一旦ValueChanged(int)信号被发射.

上面的代码成功执行,没有任何错误和print适当的值,因为它们被更改.

现在我的问题是以上适合为单个信号调用多个插槽的方法.

可以将上述两个语句(1和2)合并为一个语句.

这是我完整代码的链接.

python qt pyqt4

7
推荐指数
2
解决办法
1万
查看次数

如何用VIM中的当前文件名替换文本?

我想我的问题不是很清楚,但让我试着在这里解释一下.

假设我打开了一个以myfilename.java下面的内容命名的文件

public class test{
}
Run Code Online (Sandbox Code Playgroud)

现在,我想要的是替换testmyfilename.我们得到的vim的文件名我用:echo expand('%:r')这给了我myfilename.

现在,我的问题是如何使用上面的输出并替换test它并将其映射到一个键以供将来使用.我需要的可能是:

:%s/test/above_output_from_command/g
Run Code Online (Sandbox Code Playgroud)

vim replace file

7
推荐指数
1
解决办法
1794
查看次数

如何在html树中移动节点并提取链接?

我知道我的问题标题不具有描述性,但让我在这里解释一下.

我试图使用HTML :: TreeBuilder 解析给定的html文档.现在在这个html文档5,1,ABC,DEF中,要根据用户提供的值验证值,如果验证成功,我必须提取href链接.

所以,我的代码是:

my @tag = $tree->look_down( _tag => 'tr', class => qr{\bepeven\scompleted\b} );
for (@tag) {

    query_element($_);
}

sub query_element {

    my @td_tag = $_[0]->look_down( _tag => 'td' );

    my $num1 = shift @td_tag; #Get the first td tag
    my $num2 = shift @td_tag; # Get the second td tag


    #Making sure first/second td tag has numeric value
    $num1 = $1 if $num1->as_text =~ m!(\d+)! or die "no match found"; …
Run Code Online (Sandbox Code Playgroud)

perl html-parsing

7
推荐指数
1
解决办法
1114
查看次数

Perl:如何只替换匹配的字符串部分?

我有一个字符串foo_bar_not_needed_string_part_123.现在在这个字符串中,我想not_needed_string_part只在foo_后面跟着时删除bar.

我用下面的正则表达式:

my $str = "foo_bar_not_needed_string_part_123";

say $str if $str =~ s/foo_(?=bar)bar_(.*?)_\d+//;
Run Code Online (Sandbox Code Playgroud)

但它删除了整个字符串,只打印一个换行符.

所以,我需要的是只删除匹配的(.*?)部分.那么,输出是

foo_bar__123.
Run Code Online (Sandbox Code Playgroud)

regex string perl

7
推荐指数
2
解决办法
2万
查看次数

用Python解析html标签

我收到了一个网址,我想<BODY>从网址中提取标签的内容.我正在使用Python3.我遇到过sgmllib但它不适用于Python3.

有人可以指导我吗?我可以用HTMLParser它吗?

这是我试过的:

import urllib.request
f=urllib.request.urlopen("URL")
s=f.read()

from html.parser import HTMLParser
class MyHTMLParser(HTMLParser):
    def handle_data(self, data):
        print("Encountered   some data:", data)

parser = MyHTMLParser()
parser.feed(s)
Run Code Online (Sandbox Code Playgroud)

这给了我错误:TypeError:无法隐式地将'bytes'对象转换为str

python-3.x

5
推荐指数
1
解决办法
3974
查看次数

HtmlAgilityPack中的NullReferenceException

我试图从下面提到的网址中提取一个link使用xpath

string url = "http://www.album-cover-art.org/search.php?q=Ruin+-+Live+Album+Version+Lamb+of+God"
Run Code Online (Sandbox Code Playgroud)

我的代码:

HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc = web.Load(url); //Exception generated here Line 23

if (htmlDoc.DocumentNode != null)
{
  HtmlNode linkNode = htmlDoc.DocumentNode.SelectSingleNode(".//*[@id='related_search_row']/img/@src");
  if (linkNode != null)
        Console.WriteLine(linkNode.InnerText);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码编译得很好,但是当我尝试运行它时会产生异常

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
Run Code Online (Sandbox Code Playgroud)

完成堆栈跟踪

System.NullReferenceException: Object reference not set to an instance of an object.
   at HtmlAgilityPack.HtmlDocument.ReadDocumentEncoding(HtmlNode node) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:line 1916
   at HtmlAgilityPack.HtmlDocument.PushNodeEnd(Int32 index, Boolean close) in …
Run Code Online (Sandbox Code Playgroud)

c# html-agility-pack

5
推荐指数
1
解决办法
4933
查看次数

理解实例和类变量python

假设我在不同场景中有2个班级.

场景1

class MyClass():
    temp = 5
Run Code Online (Sandbox Code Playgroud)

情景2

class MyClass():
    temp = 5

    def myfunc(self):
          print self.temp
Run Code Online (Sandbox Code Playgroud)

现在什么时候将变量temp视为类变量和实例变量.我很困惑,因为在这两种情况下我都可以temp使用两者来访问变量的值.

  1. Object.Temp (表现为实例变量)

  2. ClassName.Temp (表现为类变量)

我相信之前已经提出了类似的问题,但如果有人能够在我的问题的背景下解释这个问题,这将是一个很大的帮助.

python

5
推荐指数
2
解决办法
583
查看次数

在bash中提取两个字符之间的字符串

我有一个格式如下的字符串

Walk Off the Earth - Somebody That I Used to Know
[playing] #36/37   1:04/4:05 (26%)
volume: n/a   repeat: off   random: on    single: off   consume: off
Run Code Online (Sandbox Code Playgroud)

现在,从上面的字符串我需要提取36#36/37.

我做的第一件事就是#36/37从第二行中提取

echo "above mentioned string" | awk 'NR==2 {print $2}'
Run Code Online (Sandbox Code Playgroud)

现在,我想36从上面提取的部分中提取出来

echo `#36/37` | sed -e 's/\//#/g' | awk -F "#" '{print $2}'
Run Code Online (Sandbox Code Playgroud)

这让36我成了我的外表.

但是,我觉得使用两者sed and awk来提取文本#36/37只是一种矫枉过正.那么,有没有更好或更短的方法来实现这一目标.

string bash awk sed

5
推荐指数
1
解决办法
2万
查看次数