这个Java程序使用一个三元if来映射布尔值到输出字符串:("*"表示true,空字符串表示false).
public class ternary {
public static void main(String[] args) {
boolean flags[]={true,false,true};
for (boolean f : flags) {
System.out.println(f?"*":"");
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以输出是*,[empty],*.
我有一个输入XML文档,如:
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="change.xsl"?>
<root>
<change flag="true"/>
<change flag="false"/>
<change flag="true"/>
</root>
Run Code Online (Sandbox Code Playgroud)
我有以下XSLT模板,它将true映射为'*',false映射为''(它可以工作):
<xsl:template match="change">
<xsl:variable name="flag" select="translate(substring(@flag,1,1),'tf','*')"/>
<xsl:value-of select="$flag"/>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
是否有更简洁的版本?
a)我可以直接从字符串'true | false'自动获取布尔值true | false的值吗?b)是否有(xpath?)构造将布尔值true | false映射到'*',''?
这很好用 - 只是想知道是否有任何改进来缩短它?
if (ARGV[0].nil?) then
input=$<
else
input=File.new(ARGV[0],"r");
end
...
# Do something with the input here, for example:
input.each_line do |line|
puts line
end
Run Code Online (Sandbox Code Playgroud) 我想为一个空元素制作一个简单的模式
<product orderid="4"/>
Run Code Online (Sandbox Code Playgroud)
我像这样创建了我的XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://xml.netbeans.org/schema/first"
xmlns:tns="http://xml.netbeans.org/schema/first"
elementFormDefault="qualified">
<xsd:element name="product" type="prodtype"/>
<xsd:complexType name="prodtype">
<xsd:attribute name="prodid" type="xsd:integer"/>
</xsd:complexType>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)
在针对XSD验证XML时出现以下错误:
Error resolving component 'prodtype'. It was detected that 'prodtype' has no namespace, but components with no target namespace are not referenceable from schema document 'file:/D:/Teacher%20assistant%202011/First%20term/web%20services/test%20programs/BpelModule1/src/product.xsd'. If 'prodtype' is intended to have a namespace, perhaps a prefix needs to be provided. If it is intended that 'prodtype' has no namespace, then an 'import' without a "namespace" attribute should …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个XML文档:我想至少进行单元测试,以确保它的格式正确.到目前为止,我只能通过使用REXML库中的'hasElements'来估算它.
有没有更好的办法 ?最好使用内置库(我的意思是随标准Ruby 1.8.x发行版一起提供的库).
require "test/unit"
require 'rexml/document'
require 'test/unit/ui/console/testrunner'
include REXML
class TestBasic < Test::Unit::TestCase
def test_createXML
my_xml=...create doc here...
doc = Document.new(my_xml);
assert(doc.has_elements?);
end
end
Test::Unit::UI::Console::TestRunner.run(TestBasic);
Run Code Online (Sandbox Code Playgroud) class x:
def __init__(self,name):
self.name=name
def __str__(self):
return self.name
def __cmp__(self,other):
print("cmp method called with self="+str(self)+",other="+str(other))
return self.name==other.name
# return False
instance1=x("hello")
instance2=x("there")
print(instance1==instance2)
print(instance1.name==instance2.name)
Run Code Online (Sandbox Code Playgroud)
这里的输出是:
cmp method called with self=hello,other=there
True
False
Run Code Online (Sandbox Code Playgroud)
这不是我的预期:我试图说'如果名称字段相等,则两个实例相等'.
如果我只是return False
从__cmp__
功能,这也报告True
!! 如果我回来-1
,那么我得到False
- 但是因为我想要比较字符串,这感觉不对.
我在这做错了什么?
在*nix上,使用BASH(等)通过使用内置的'type'shell,询问系统命令所在的位置(等):
$ type cat
cat is /bin/cat
Run Code Online (Sandbox Code Playgroud)
Microsoft PowerShell 2.0中是否存在等效的"类型"命令?
windows shell powershell command-line-interface powershell-2.0
我正在尝试将整个文件提取到内存中(完成 - 使用StringIO) - 但据我所知,这些对象的行为并不像'真实'文件那样 - 我得到了全部内容,或者我可以阅读一次一行,但我无法弄清楚如何应用这种模式:
import csv
with open(#MYMEMORYFILE_HERE#, 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in spamreader:
Run Code Online (Sandbox Code Playgroud)
有没有办法像磁盘文件一样处理内存文件,所以我可以使用上面更好的习语?
Python 2.7.4 (default, Apr 19 2013, 18:28:01)
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢你的答案 - 我想我已经缩小了令我困惑的事情...但我仍然有一个问题,以下没有输出任何东西?我怀疑潮红?
from csv import reader, writer
import StringIO
memfile=StringIO.StringIO()
spamwriter = writer(memfile)
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
spamreader=reader(memfile)
for row in spamreader:
print ', '.join(row)
memfile.close()
Run Code Online (Sandbox Code Playgroud)
编辑#2:但是我正在咆哮错误的树我想:我无法使磁盘上的版本也工作('IOError:文件没有打开阅读' - 当我打电话给已读的时候打开文件...)编辑#3:放弃了StringIO(没有真正的需要) - 根据答案使用了分割线.
我会在这里留下代码和评论 - 以防它有用.(即使它是一个死胡同).
我是 MQTT 的新手:但是我有一些基本的 Python 程序可以在其中将传感器读数发布到特定主题:然后其他客户端可以订阅以在事件驱动的基础上获取温度。
但是当涉及到发送命令时;我有点坚持最好地做到这一点。
例如:将“倒数计时器”连接到 mqtt。
这个计时器有“停止”和“开始”两种状态。它将自身初始化为“停止”状态并等待“开始”命令;然后会倒计时;将当前倒计时发布到主题。当倒计时到零时;它将再次将其状态切换为“停止”,并等待另一个“启动”命令。
如果它收到“停止”命令(通过 mqtt);它也应该进入“停止”状态。
所以也许我可以创建类似的主题:
countdown_timer/command
countdown_timer/state
countdown_timer/value
Run Code Online (Sandbox Code Playgroud)
倒计时设备可以订阅“命令”并通过发布到“状态”来做出反应。(“停止”还是“开始”?)
但是,客户端是否应该在处理完“命令”主题值后以某种方式“使用”它?
或者最好有类似的东西:
countdown_timer/send_command
countdown_timer/command_result
Run Code Online (Sandbox Code Playgroud)
控制器将在何处发送命令,订阅设备将执行该命令并在“command_result”主题上放置“ok”或“error”?
我想快速检查今天发生的事件(即:从午夜开始的任何事情); 在Powershell中有'今天'别名/内置来帮助解决这个问题吗?
我现在正在做这样的事情:
get-eventlog system -source "disk" -after ([datetime] '01/01/2015')
Run Code Online (Sandbox Code Playgroud)
但当然我不得不改变日期字符串.
[另外:那个日期时间构造函数似乎只坚持使用美国日期格式(mm/dd/yyyy) - 尽管我的Windows Locale是英国的吗?]
我认为列表推导可能会给我这个,但我不确定:Python(2.6)中的任何优雅解决方案通常用于选择列表中的唯一对象并提供计数?
(我已经定义了一个__eq__
定义我的对象定义的唯一性).
所以在RDBMS-land中,这样的事情:
CREATE TABLE x(n NUMBER(1));
INSERT INTO x VALUES(1);
INSERT INTO x VALUES(1);
INSERT INTO x VALUES(1);
INSERT INTO x VALUES(2);
SELECT COUNT(*), n FROM x
GROUP BY n;
Run Code Online (Sandbox Code Playgroud)
这使:
COUNT(*) n
==========
3 1
1 2
Run Code Online (Sandbox Code Playgroud)
所以,这是我在Python中的等效列表:
[1,1,1,2]
Run Code Online (Sandbox Code Playgroud)
我想要与上面给出的SQL SELECT相同的输出.
编辑:我给这里的例子是简化的,我其实处理用户定义的对象实例的列表:只是为了完整性我有额外的代码,我需要得到整个事情的工作:
import hashlib
def __hash__(self):
md5=hashlib.md5()
[md5.update(i) for i in self.my_list_of_stuff]
return int(md5.hexdigest(),16)
Run Code Online (Sandbox Code Playgroud)
__hash__
需要使用该方法才能使set
转换工作(我选择了在2.6中工作的列表理解思想[尽管事实上我知道这涉及效率低下(参见注释) - 我的数据集足够小,因为它不是问题]).my_list_of_stuff
上面是我的对象定义中的(字符串)列表.