给出以下XML:
<current>
<login_name>jd</login_name>
</current>
<people>
<person>
<first>John</first>
<last>Doe</last>
<login_name>jd</login_name>
</preson>
<person>
<first>Pierre</first>
<last>Spring</last>
<login_name>ps</login_name>
</preson>
</people>
Run Code Online (Sandbox Code Playgroud)
如何从当前/登录匹配器中获取"John Doe"?
我尝试了以下方法:
<xsl:template match="current/login_name">
<xsl:value-of select="../people/first[login_name = .]"/>
<xsl:text> </xsl:text>
<xsl:value-of select="../people/last[login_name = .]"/>
</xsl:template>
Run Code Online (Sandbox Code Playgroud) 我正在寻找将类似SQL语句转换为等效的正则表达式即ie
LIKE '%this%'
LIKE 'Sm_th'
LIKE '[C-P]arsen'
Run Code Online (Sandbox Code Playgroud)
这样做的最佳方法是什么?
PS我想在.Net Framework(C#)上做这件事.
我想知道是否有可能在尝试匹配时正则表达式中提取正则表达式失败的给定字符串中的索引位置?
例如,如果我的正则表达式是"abc"并且我试图将其与"abd"匹配,则匹配将在索引2处失败.
编辑以澄清.我需要这个的原因是允许我简化我的应用程序的解析组件.该应用程序是一个Assmebly语言教学工具,允许学生编写,编译和执行程序集程序.
目前我有一个tokenizer类,它使用regex将输入字符串转换为Tokens.这非常有效.例如:
给定以下input ="INP:x:"时,tokenizer将生成以下标记
:
Token.OPCODE, Token.WHITESPACE, Token.LABEL, Token.EOL
Run Code Online (Sandbox Code Playgroud)
然后分析这些标记以确保它们符合给定语句的语法.目前,这是使用IF语句完成的,并且证明是麻烦的.这种方法的好处是我可以提供详细的错误消息.IE
if(token[2] != Token.LABEL) { throw new SyntaxError("Expected label");}
Run Code Online (Sandbox Code Playgroud)
我想使用正则表达式来定义语法而不是烦人的IF语句.但在这样做时,我失去了返回详细错误报告的能力.因此,我至少想告知用户发生错误的WHERE.
我刚刚开始与BeautifulSoup一起修补scrapy,我想知道我是否遗漏了一些非常明显的东西,但我似乎无法弄清楚如何从生成的汤对象中获取返回的html文档的doctype.
鉴于以下html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta charset=utf-8 />
<meta name="viewport" content="width=620" />
<title>HTML5 Demos and Examples</title>
<link rel="stylesheet" href="/css/html5demos.css" type="text/css" />
<script src="js/h5utils.js"></script>
</head>
<body>
<p id="firstpara" align="center">This is paragraph <b>one</b>
<p id="secondpara" align="blah">This is paragraph <b>two</b>.
</html>
Run Code Online (Sandbox Code Playgroud)
谁能告诉我是否有使用BeautifulSoup从中提取声明的doctype的方法?
在这里和互联网上搜索,有很多例子可以将消息标记为SEEN,即使这是使用imap自动进行的.
但是如何将电子邮件标记为UNSEEN或UNREAD.
我在python中有一个接收UNSEEN消息的脚本,它工作得很好.但是在阅读它们之后,imap会自动将它们标记为SEEN工作正常,但前提是脚本没有错误,因为如果它引发异常,我希望将电子邮件再次标记为UNSEEN,因此下次脚本将再次读取该消息.
我怎么能做到这一点?
我也曾经使用过mail.select(mail_label,readonly=True),但它并没有帮助,因为我无法标记SEEN我也需要的消息.我也希望这适用于Gmail.
我正在创建一个我正在创建的本地响应缓存,Pipeline因为我需要根据从站点收集的ID来存储项目的信息.
现在我还需要创建一个Downloader Middleware因为取决于我之前存储的ID,我不想用新的网站访问Request,所以我在拦截Request之前发送到服务器,检查我的ID是否已经存在缓存,如果是,则只从缓存中返回相同的项目.
现在你看到两者Pipeline并且Middleware需要一起工作,所以分离看起来不是很干净(我也有两个变量,我想要独特),但当我在各自的设置上设置时:
DOWNLOADER_MIDDLEWARES = {
'myproject.urlcache.CachePipelineMiddleware': 1,
}
ITEM_PIPELINES = {
'myproject.urlcache.CachePipelineMiddleware': 800,
}
Run Code Online (Sandbox Code Playgroud)
我得到两个不同的实例(检查构造函数上的日志消息,因此它被创建两次).
我怎样才能确保只有一个实例被创建,并且我不会抵触Pipeline和Downloader Middleware我的项目的功能?
所以我一直在使用硒来进行刮擦。但我想将所有代码更改为 Scrapy。我唯一不确定的是我正在使用多处理(python 库)来加速我的进程。我研究了很多,但我完全不明白。我发现:Multiprocessing of Scrapy Spiders in Parallel Processes但它对我没有帮助,因为它说它可以用 Twisted 完成,但我还没有找到一个例子。
在其他论坛上,它说 Scrapy 可以与多处理一起工作。
最后一件事,在scrapy中,选项CONCURRENT_REQUESTS(设置)与多处理有一些联系吗?
我有一个列表框,显示基于XPath查询的项目.
此XPath查询会根据用户在GUI中其他位置的选择而更改.XPath始终引用同一文档.
目前,我使用一些C#代码将控件的绑定更改为新的XPath表达式.
我想改为将XAML绑定到XPath,然后根据需要更改该XPath的值.
我该怎么办?
这是一个类模板的片段,它导致编译错误:
/* Secondary index class */
template<class TKey, class TVal, class key_traits, class val_traits>
template<class TSecKey, class sktraits>
class CBtreeDb<TKey, TVal, key_traits, val_traits>::CDbSecondaryIndex: protected CBtreeDb<TKey, TVal>, public IDeallocateKey
{
public:
typedef TSecKey skey_type;
typedef typename sktraits skey_traits;
typedef CNewDbt<TSecKey, sktraits> CDbSKey;
typedef typename iterator_t<TSecKey, skey_traits> iterator;
typedef typename iter_lower_bound_t<skey_type> iter_lower_bound;
typedef typename iter_upper_bound_t<skey_type> iter_upper_bound;
CDbSecondaryIndex(CDbEnv* pEnv, u_int32_t flags, bool bAllowDuplicates=false):
CBtreeDb(pEnv, flags, bAllowDuplicates)
{
}
// Class implementation continues ...
};
Run Code Online (Sandbox Code Playgroud)
我得到的编译器错误消息是:
expected nested-name-specifier before 'sktraits'.
Run Code Online (Sandbox Code Playgroud)
实际上,每次typedef声明后都会出现此错误typename …
所以我很困惑,如果在Java枚举中可以有功能.我正在制作一个简单的html编辑器,并希望使用枚举来表示html标签,是的我知道这不是最好的方法,但它是我的小组决定实现它的方式.
所以,我一直在试图做这样的事情,但是当我尝试调用TagEnums.normalTags()它表明使它成为一个静态方法,我想我不知道这是否正确或是否有更好的方式来实现,而不是把它公开ArrayList<String> normalTags()到public static ArrayList<String> normalTags()
public enum TagEnum {
H1, H2, H3, H4, H5, H6, P, B, I, U, BR, HR, RP, RT, RUBY
public ArrayList<String> normalTags(){
String normalTags = "H1, H2, H3, H4, H5, H6, P, B, I, U";
ArrayList<String> tags = new ArrayList<String>();
for(Enum<?> currentEnum: TagEnum.values()){
if(normalTags.contains(currentEnum.toString())){
tags.add("<"+currentEnum.toString().toLowerCase()+">");
tags.add("</"+currentEnum.toString().toLowerCase()+">");
}
}
return tags;
}
}
Run Code Online (Sandbox Code Playgroud)