小编kwi*_*ess的帖子

用Python替换字符串的子字符串

我想就用一些其他文本替换字符串的子串的最佳方法得到一些意见.这是一个例子:

我有一个字符串,a,可能是"你好我的名字是$ name".我还有另一个字符串b,我想在其子字符串'$ name'的位置插入字符串a.

我认为如果以某种方式指示可替换变量将是最简单的.我使用了一个美元符号,但它可以是花括号之间的字符串或任何你认为最好用的字符串.

解决方案: 以下是我决定这样做的方法:

from string import Template


message = 'You replied to $percentageReplied of your message. ' + 
    'You earned $moneyMade.'

template = Template(message)

print template.safe_substitute(
    percentageReplied = '15%',
    moneyMade = '$20')
Run Code Online (Sandbox Code Playgroud)

python string substring string-interpolation

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

Jersey REST客户端 - 将自定义MediaType视为MediaType.APPLICATION_JSON

我正在编写一个REST客户端,使用Jersey 和JacksonFeature启用了一个Web服务,强制我指定他们的自定义内容类型,即使它只是普通的JSON.换句话说,当我这样做时:

Request request = buildMySampleRequestPojo();

Response response = requestBuilder.post(
        Entity.entity(request, MediaType.APPLICATION_JSON)
);
Run Code Online (Sandbox Code Playgroud)

该服务抱怨我使用的内容类型无效.我可以通过指定自定义命名的媒体类型来代替MediaType.APPLICATION_JSON常量来解决这个问题:

Response response = requestBuilder.post(
        Entity.entity(request, "vnd.stupidNameThatReallyIsJustJSON+json")
);
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,我得到:

*SEVERE: MessageBodyWriter not found for media type=stupidNameThatReallyIsJustJSON*
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以让Jersey对待这个自定义的媒体类型名称,就好像它是普通的JSON而不编写自定义的MessageBodyWriter?

java json web-services jersey jersey-client

10
推荐指数
1
解决办法
2555
查看次数

使用Qt绘制Sin(x)图

我正在尝试绘制正弦图的方法.

我的小部件只希望通过几个任意数据点传递.我必须将这些数据点拟合成正弦曲线:

SIN(X)

到目前为止,我已经尝试了一些使用QPainterPath的方法.

  1. QPainterPath :: lineTo - 我尝试使用此函数绘制曲线,通过获取我的数据点并在它们之间创建如此多的点,该线实际上平滑了一点.我觉得这有点太计算密集了.
  2. QPainterPath :: cubicTo - 从我从RTFM收集的内容来看,这是最好的方法.唯一的问题是,我不确定如何将控制点绘制在一致的位置,并以编程方式按照我希望的方式平滑曲线.我无法通过此功能获得所需的结果.

经过一些谷歌搜索,我发现了几个使用Qwt进行曲线绘制的论坛帖子.如果我可以使用Qwt会很棒,但它不是一个选项,因为我只限于使用Qt.

有没有人有有用的反馈/建议?

qt

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

对工作日名称数组进行排序

我有以下数组:

 (
     [0] => Array
         (
             [schedules] => Array
                 (
                     [monday] => 1
                     [tuesday] => 1
                     [wednesday] => 1
                     [thursday] => 1
                     [friday] => 1
                     [saturday] => 0
                     [sunday] => 1
                 )

         )

 )
Run Code Online (Sandbox Code Playgroud)

我想用第一个键是明天那天对这个数组的元素进行排序.让我们说今天是星期三.我希望我的数组看起来像这样:

 (
     [0] => Array
         (
             [schedules] => Array
                 (
                     [thursday] => 1
                     [friday] => 1
                     [saturday] => 0
                     [sunday] => 1
                     [monday] => 1
                     [tuesday] => 1
                     [wednesday] => 1
                 )

         )
 )
Run Code Online (Sandbox Code Playgroud)

我已经有了工作日可用(例如字符串'thursday').它被传递到我正在使用的函数中.

有关实现此类排序的任何建议吗?谢谢!

php arrays sorting algorithm

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

了解VB6项目文件(.vbp)

在VBP文件中,有"引用"和"对象",如下所示:

Reference=*\G{D63E0CE2-A0A2-11D0-9C02-00C04FC99C8E}#2.0#0#..\..\..\WINDOWS\system32\msxml.dll#Microsoft XML, version 2.0
Object={EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}#1.1#0; ieframe.dll
Run Code Online (Sandbox Code Playgroud)
  1. 这两者有什么不同?
  2. 为什么有些dll通过Reference而不是Object引用,反之亦然?
  3. VB获取Object引用的文件路径在哪里?在VBP中没有为它们指定路径,在搜索我的注册表时也没有出现GUID!但是,当我加载项目时,VB尝试查找dll/ocx/etc. 在一些绝对路径(例如C:\path\to\dll\ieframe.dll).如果它不在注册表或VBP中,它在哪里获得这条路径?!

vb6

6
推荐指数
1
解决办法
2429
查看次数

我的rc.local文件(Ubuntu)出了什么问题?

我有一个python守护进程,它通过rc.local启动.具有相同权限的相同脚本安装在我拥有的其他一些Ubuntu盒子上.它在这些安装上运行没有问题.也就是说,重启框后,守护进程正在运行.

但是,通过此特定安装,守护进程在我登录时未运行并检查进程是否存在.系统之间的rc.local文件是相同的(或至少足够接近):

localaccount@sosms:~$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

python /var/www/myDaemon/Main.py > /var/log/somelog.txt

exit 0
Run Code Online (Sandbox Code Playgroud)

权限是:

localaccount@sosms:~$ ls -la /etc/rc.local
-rwxr-xr-x 1 localaccount localaccount …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu boot startup

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

比较dateutil.relativedelta

我正在尝试在两个相对增量之间进行“>”比较:

if(relativedelta(current_date, last_activity_date) > relativedelta(minutes=15)):
Run Code Online (Sandbox Code Playgroud)

这是Eclipse中调试器窗口的输出:

调试窗口

其中一个相对距离仅15分钟-远远小于另一个相对距离。为什么此比较返回false而不是预期的true?有什么更好的解决方案?

python

4
推荐指数
1
解决办法
1957
查看次数

在Xerces UTF8Reader中编码导致MalformedByteSequenceException的问题

我遇到com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException了一个XML文件.我使用调试器逐步完成了Xerces代码,并缩小了这个区域的范围.我能够通过删除文档中的"智能引号"字符来确定该文档变得可解析.

该文件没有DTD.Notepad ++将其固定为"ANSI as UTF-8".Firefox将其视为"西方".我记得在大学里一个不那么令人惊叹的讲座中,UTF-8被设计为向后兼容单字节编码系统.我也看到在这个图表中,字节序列e2 80 9d实际上代表了"正确的双引号",但即使我看不到编码问题,我也认为有一个.

我从Xerces获得的异常消息是Invalid byte 3 of 3-byte UTF-8 sequence.它从UTF8Reader的invalidByte(3, 3, b2)第435行的调用中被抛出.当我试图完全理解这种方法的逻辑时,我的大脑开始融化我的耳朵,所以我可能会遗漏一些东西,但正如我在上面提到的字节3(0x90).至少上面的序列,根据UTF-8表是有效的.

以下是在十六进制编辑器中显示双引号的文件段:XML细分

我尝试过以下方法:

  • 强制使用UTF-8通过Charset.forName("UTF-8")加载字符串
  • 添加DTD <?xml version="1.0" encoding="UTF-8"?>
  • 在Notepad ++中打开文件,并通过其UI将其编码为UTF-8
  • 以上各种组合,有时反复

表示为无效的字节似乎是63(0x3F?) eclipse截图

我也尝试将这个智能引号字符添加到以前可解析的文档中.正如所料,它使解析器抛出相同的异常.

堆栈跟踪:

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 3 of 3-byte UTF-8 sequence.
    at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:687)
    at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:435)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1753)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.skipChar(XMLEntityScanner.java:1426)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2815)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:347)
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
Run Code Online (Sandbox Code Playgroud)

...

更新: 我仍然需要找到一种方法来安全地将其转换为String.我使用Notepad ++将文件编码为UTF-8.下面的代码成功地将字节加载到String中(我在Eclipse中调试时可以看到在String中读取XML),但现在我得到了带有不同参数的MalformedByteSequenceException.这一次,我可以发布我正在使用的代码和 …

java xml xerces character-encoding xml-parsing

4
推荐指数
1
解决办法
3896
查看次数

从64位Java应用程序访问32位COM DLL(找不到注册表项)

我试图通过64位Java库调用CoCreateInstance(...):org.eclipse.swt.internal.ole.win32.COM.我试图挂钩的DLL是Visual SourceSafe的DLL.该项目的目的是将为32位Eclipse制作的VSS插件(http://sourceforge.net/projects/vssplugin/)移植到64位Eclipse.

当我使用64位版本的org.eclipse.swt.internal.ole.win32.COM时,调用工作正常,但是对于32位版本,调用失败.呼叫正在使用如下:

private void init(GUID guid) {
    long[] ppv = new long[1];
    int result = COM.CoCreateInstance(guid, 0, COM.CLSCTX_INPROC_HANDLER | COM.CLSCTX_INPROC_SERVER | COM.CLSCTX_LOCAL_SERVER,
            COM.IIDIDispatch, ppv);
    if (result != COM.S_OK)
        OLE.error(OLE.ERROR_CANNOT_CREATE_OBJECT, result);
    init(new OleAutomation(new IDispatch(ppv[0])));
}
Run Code Online (Sandbox Code Playgroud)

调用失败并返回-2147221164,我猜这是某种错误代码,指定无法找到相应的注册表项.

我尝试过的一些事情包括:

有没有人对此提出建议?

java winapi visual-sourcesafe eclipse-plugin 32bit-64bit

3
推荐指数
1
解决办法
1261
查看次数

Eclipse PDT调试设置(XDebug/Zend)

我一直有一段时间让Eclipse调试我的CakePHP应用程序.我试过阅读几个教程(没有一个很好).我尝试过使用Zend和XDebug.

一旦它正确设置,我甚至不确定我应该如何使用这个东西.

我尝试在我的PHP代码中设置一个断点,右键单击文本编辑器中的PHP文件,然后选择"debug php web application",但它从未达到过断点.它在eclipse中打开了一个浏览器,其中一些GET参数附加到我的普通URL:

?debug_host = 192.168.1.2%2C127.0.0.1&start_debug = 1&debug_port = 10000&original_url = HTTP%3A%2F%2Flocalhost%2Fparticipants&send_sess_end = 1&debug_stop = 1&debug_start_session = 1&debug_no_cache = 1331422177353&debug_session_id = 1000

我在我的项目php调试属性中不确定的一件事是PHP可执行文件字段.它被自动设置为'none',因此我必须创建一个指向'/ usr/bin/php'的条目.也许这不正确?

我创建了一个简单的应用程序,其中包含一个只有几个echo语句的php文件.我无法让调试器在这个中遇到断点.

这是我的phpinfo():https://sites.google.com/site/kylephpinfo/phpinfo.html ? attredirects = 0& d = 1

我从来没有遇到过调试器在我生活中工作的麻烦.

aptana eclipse zend-framework xdebug eclipse-pdt

3
推荐指数
1
解决办法
2955
查看次数

代码块和线程优先级

当我将代码放入块中时,如下所示:

    {
      f1();
      f2();
    }
Run Code Online (Sandbox Code Playgroud)

是否保证这两个函数将由CPU一个接一个地调用,而不管其他进程正在运行?

我想问的原因是因为F1,在我的情况,做了与操作系统,然后F2依赖于操作系统在同一状态中才能正常工作的.

如果没有,(我真的不认为它),是否有任何C++结构可以帮我做这样的事情?

另外,我将提供一些背景信息,说明在我的实际代码中正在做什么:

f1()实际上是一个在win32系统上生成顶级窗口的函数.f2()是一个搜索最顶层窗口(不是任务栏)的函数.所以,我担心的是我可能遇到一个问题,其中可能在f1完成和f2尚未执行之间的时间内创建其他顶级窗口,在这种情况下f2将找到错误的窗口.

c++

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