tl; dr:我正在使用带有Python的Amazon Product Advertising API.如何为书籍执行关键字搜索并获取包含每个条目的TITLE,ISBN和PRICE的XML结果?
详细版本:
我在一个网站上使用Python,允许用户从不同的网站搜索教科书,如eBay和亚马逊.基本上,我需要从其中一个站点的一组搜索结果中获取每个项目的标题,ISBNS和价格等简单信息.然后,我可以根据需要在我的应用程序中存储和格式化该信息(例如,显示HTML).
在eBay的案例中,获取我需要的信息并不太难.我曾经urllib2根据我发现的样本提出请求.我只需要一个特殊的安全密钥来添加到URL:
def ebaySearch(keywords): #keywords is a list of strings, e.g. ['moby', 'dick']
#findItemsAdvanced allows category filter -- 267 is books
#Of course, I replaced my security appname in the example below
url = "http://svcs.ebay.com/services/search/FindingService/v1?OPERATION-NAME=findItemsAdvanced&SERVICE-NAME=FindingService&SERVICE-VERSION=1.0.0&SECURITY-APPNAME=[MY-APPNAME]&RESPONSE-DATA-FORMAT=XML&REST-PAYLOAD&categoryId=267&keywords="
#Complete the url...
numKeywords = len(keywords)
for k in range(0, numKeywords-1):
url += keywords[k]
url += "%20"
#There should not be %20 after last keyword
url += keywords[numKeywords-1]
request = urllib2.Request(url)
response = urllib2.urlopen(request) #file like thing …Run Code Online (Sandbox Code Playgroud) 我正在计划一个C++程序,它需要3个代表一个密码算术难题的字符串.例如,给定TWO,TWO和FOUR,程序将找到每个字母的数字替换,使得数学表达式
TWO
+ TWO
------
FOUR
Run Code Online (Sandbox Code Playgroud)
是正确的,假设输入是正确的.解决这个问题的一种方法当然是强制它,用嵌套循环为每个字母分配每个可能的替换,重复尝试总和等,直到最终找到答案.
我的想法是,尽管这是非常低效的,但是在执行一系列推算以限制每个变量的域之后,潜在的循环检查可能是可行的(甚至是必要的)方式.我觉得很难想象,但是首先假设像这样的通用/填充结构是合理的(每个X代表一个不一定不同的数字,每个C都是一个进位数,在这种情况下,会是0还是1)?:
CCC.....CCC
XXX.....XXXX
+ XXX.....XXXX
----------------
CXXX.....XXXX
Run Code Online (Sandbox Code Playgroud)
考虑到这一点,还有一些更多的计划思路:
- 虽然在这个问题中不会给出前导零,但我可能应该在适当的地方添加足够多的内容,以便将操作数输出/匹配.
- 我想我应该从每个字母的一组可能值0-9开始,可能在"域"表中存储为向量,并在扣除时从中消除值.例如,如果我看到一些像这样排列的字母
A
C
--
A
Run Code Online (Sandbox Code Playgroud)
,我可以说C是零,这消除了其域中的所有其他值.我可以想到相当多的推论,但是将它们推广到各种小情况并将它放入代码中乍一看似乎有些棘手.
- 假设我有一系列很好的推论贯穿整个事情并从域表中引出很多值,我想我仍然只是循环遍历所有事情并希望状态空间足够小以便在合理的情况下生成解决方案多少时间.但感觉必须要有更多的东西! - 可能是一些聪明的方程式设置或沿着那些线.
提示很感激!
我有一组QLineEdits应该接受一定范围内的双重值(例如,-15到15).
在设置每个时,我有以下几点:
lineEdit->setValidator(new QDoubleValidator(minVal, maxVal, 5, lineEdit));
Run Code Online (Sandbox Code Playgroud)
理想情况下,行编辑可以使用,只能输入范围内的值.当我尝试这个时,我注意到只有数字可以根据需要输入,但它们仍然可以超出范围.
如何动态强制输入以适应范围(例如,如果范围是-15到15并且用户键入1,则尝试键入9,它不起作用/显示9 ...但键入1然后2确实工作/显示2.)?
我是否需要在validate()某处连接并调用该功能?
我正在学习我的第一个函数式编程语言,但在初始后勤方面遇到了一些麻烦(教授基本上说,"以某种方式设置它"并没有提供太多细节.)
无论如何,我有Mac OS X版本10.6.8.首先,我在我的主目录中安装了GHC,发现我可以在终端中使用命令"ghci"打开它.从那里(借口我完全缺乏知识),我按照教学大纲中的模糊指示,打开了另一个窗口,其中包含我要修改的a1.hs文件作业.当我完成一个函数的定义时,我输入了命令"ghc a1-skeleton.hs"来打开加载到它的解释器(这就是我要做的,对吧?)但是得到了这个错误:
a1.hs:5:8:
Could not find module `System'
It is a member of the hidden package `haskell98-2.0.0.1'.
Use -v to see a list of the files searched for.
Run Code Online (Sandbox Code Playgroud)
我猜这就像在C++这样的语言中缺少一个"#include"或类似的东西.我只需要在特定目录中查找/添加内容吗?
此外,由于我没有立即抓住这些东西,翻译究竟做了什么?它是一个程序,它在程序语言意义上跳过'编译'并且只是试图立即遵循.hs文件中的命令吗?
谢谢!
UPDATE ::似乎是问题的代码:
2 module Main where
3
4 import Test.HUnit
5 import System
Run Code Online (Sandbox Code Playgroud) 我正在开发一个程序,该程序处理多个线程的访问,在有界缓冲区容器中进行存取以及在其中进行取回。我注意到线程存在一些主要问题,并怀疑我的缓冲区在某处部分或根本上是不正确的。
为确保我知道我在做什么,我希望能查看缓冲区代码。该类使用了我在其他地方实现的信号量,现在我将假定其有效(如果没有,我会尽快解决!),我添加了一些注释,试图解释我的推理。
首先,.h文件:
#ifndef BOUNDED_BUFFER_H
#define BOUNDED_BUFFER_H
#include "Semaphore.H"
#include <string>
#include <vector>
using namespace std;
class Item{ //supposed to eventually be more extensible...seems silly with just a string for now
public:
Item(string _content){content = _content;}
string GetContent() {return content;}
private:
};
class BoundedBuffer{
public:
BoundedBuffer();
void Deposit(Item* _item);
Item* Retrieve();
int GetNumItems() {return count;}
vector<Item*> GetBuffer() {return buffer;}
void SetSize(int _size){
capacity = _size;
buffer.reserve(_size); //or do I need to call "resize"
}
private:
int capacity;
vector<Item*> buffer; //I …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个 gprolog 程序,该程序确认,鉴于这首歌的一些“合理”背景(在这里听:-)),当我查询时会回答“是” grandpa(me, me)(即,我真的是我自己的爷爷吗?)。这是我的 AI 课程的作业,由我们自己决定要包含哪些事实和谓词。虽然它充满了冗余和一些我不使用的条款(有些只是为了歌曲),但这是我拼凑起来的,必要的假设是继子女被认为是完整的/一般的孩子:
3 male(me).
4 male(mydad).
5 male(mybaby).
6 female(widow).
7 female(redhead).
8 grandma(Z, X) :- female(Z), child(Z, Y), child(Y, X).
9 grandpa(Z, X) :- male(Z), child(Z, Y), child(Y, X).
10 child(me, mydad).
11 child(redhead, widow).
12 child(mybaby, me).
13 child(A, B) :- married(B, C), married(A, D), child(D, C).
14 child(C, A) :- married(A, B), child(C, B). %step children as children
15 married(me, widow).
16 married(widow, me).
17 married(mydad, redhead). …Run Code Online (Sandbox Code Playgroud) 我是新来bash和尝试写禁用kworker业务在aMaia的回答脚本这里.
到目前为止,我有这个,我从root运行:
1 #!/bin/bash
2
3 cd /sys/firmware/acpi/interrupts
4 for i in gpe[[:digit:]]* # Don't mess with gpe_all
5 do
6 num=`awk '{print $1}' $i`
7 if (( $num >= 1000 )); then # potential CPU hogs?
8 # Back it up and then disable it!!
9 cp $i /root/${i}.backup
10 echo "disable" > $i
11 fi
12 done
Run Code Online (Sandbox Code Playgroud)
但运行它会导致:
./kkiller: line 10: echo: write error: Invalid argument
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?我以为$i只是文件名,这似乎是echo的正确语法.
一般来说,清理/改进脚本的建议也很受欢迎!
更新:set -vx添加到脚本的顶部,这是一个有问题的迭代:
+ for …Run Code Online (Sandbox Code Playgroud) 我有一个类Graph,其复制构造函数在Graph.h中声明如下:
template<typename Object,typename Weight>
Graph<Object,Weight>::Graph(Graph<Object,Weight>& G)
Run Code Online (Sandbox Code Playgroud)
在其他地方,我尝试使用它:
Graph<double,double> G = make_graph("dense.g");
Run Code Online (Sandbox Code Playgroud)
...但是它给了我以下错误:
time_trialsALIST.cpp:37: error: no matching function for call to `Graph::Graph(Graph)' Graph.h:142: note: candidates are: Graph::Graph(Graph&) [with Object = double, Weight = double]
我不明白为什么会这样; make_graph函数只返回一个Graph:
Graph<double,double> make_graph(string filename){...}
Run Code Online (Sandbox Code Playgroud)
在某个地方我需要一个'&'吗?
我正在学习python的ObjectPath,并且已经找到了,例如,如何对属性进行精确匹配:
>>> import objectpath
>>>
>>> tree = objectpath.Tree({'doc': {'title': 'Purple is Best Color'}})
>>>
>>> tree.execute('$..*[@.title is "Purple is Best Color"]').next()
{'title': 'Purple is Best Color'}
Run Code Online (Sandbox Code Playgroud)
这对我来说很有意义; 我想从root($)开始,递归地(..)找到所有(*)项目(@),其中title =="紫色是最佳颜色".它的工作原理!
但后来我尝试与in运营商类似的东西:
>>> tree.execute('$..*["Purple" in @.title]').next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
Run Code Online (Sandbox Code Playgroud)
咦?看起来像是调整条件的自然方式,但它并不完全正确.
在手册中,我读到了in 检查表达式左侧的结果是否在数组,对象或字符串中,以及在对象中是否匹配键.(也许那是我的问题,但不确定这意味着什么).我认为我现在@的确是一个字符串...?
考虑到上述情况,我可以在这里找到什么?
我是svn的新手(基本上,我所知道的是如何使用ci,co,rm,add,stat和diff之类的东西,但没有技术细节),我试图检查一大块代码.
我正在从最顶端的事情(带".")办理登机手续,如下所示:
svn ci -m "Major check-in of restructured GUI classes." .
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会在某个时刻存在一个旧的图标文件,从而产生以下错误:
Aborting commit: '/users/nvjulian/Research/5prog/trunk/src/gui/icon/Board.xpm' remains in conflict
Run Code Online (Sandbox Code Playgroud)
我试图解决这个问题,但没有成功:
[nvjulian@dupin trunk]$ svn rm src/gui/icon/Board.xpm
svn: Use --force to override this restriction
svn: 'src/gui/icon/Board.xpm' is not under version control
Run Code Online (Sandbox Code Playgroud)
......即使我这样做了:
[nvjulian@dupin trunk]$ svn rm --force src/gui/icon/Board.xpm
svn: 'src/gui/icon/Board.xpm' does not exist
Run Code Online (Sandbox Code Playgroud)
实际上,这个文件不存在; 很久以前它就被删除了,在搜索完整台电脑后我没有找到它.我从各种目录位置尝试了这些命令,但仍然无法正常工作.实际上,当我第一次做svn stat准备办理登机手续时,我遇到了这个:
! C icon/Board.xpm
> local delete, incoming delete upon update
Run Code Online (Sandbox Code Playgroud)
所以我试着在那个文件上做了svn(?),但仍然没有成功.我在这里错过了什么?