小编Zha*_*g18的帖子

Python:如何使用变量传递参数名称

我正在使用的模块具有许多定义有不同参数名称的函数,它们或多或少地具有相同的目的:

def func1(start_date):
    ....
def func2(startdate):
    ....
def func3(s_date):
    ....
def func4(sdate):
    ....
Run Code Online (Sandbox Code Playgroud)

并且它们都出现在参数列表的不同位置(在上述简化情况下,它们都位于位置1,但实际上并非如此)。

我想编写一个包装,该包装可以通过start_date从函数名到参数名的字典将实际值传递给任何这些函数:

def func2arg_name():
    return {'func1' : 'start_date', 
            'func2' : 'startdate', 
            'func3' : 's_date', 
            'func4' : 'sdate' }
Run Code Online (Sandbox Code Playgroud)

然后是实际的包装器:

f2a = func2arg_name()
def func(func_name, sdate):
    locals()[func_name](f2a[func_name] = sdate)

func('func1', '20170101')
Run Code Online (Sandbox Code Playgroud)

显然,这是行不通的。本质上,f2a [func_name]未被识别为合法关键字。有谁知道该怎么做,即使用变量传递参数名称吗?注意func1func4外部定义,不能更改。

python parameter-passing

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

Notepad ++双击选择单词包括其他非单词字符

我已经使用记事本++很长一段时间了.我经常使用的一个功能是双击一个单词以使其自身和所有外观都在同一个文件中突出显示.但最近的更新似乎改变了边界定义这个词.具体来说,如果单词周围有前导或尾随制表符,它们都会突出显示(导致同一单词的其他外观,但没有标记,不会突出显示),如果单词后面有右括号(但不能打开)帕伦),他们也被选中了.

我玩过Settings-> Preferences-> Delimiter无济于事,因为它只允许你添加字符作为单词的一部分,但我想要的是减去制表符和括号.我该怎么办?谢谢.

notepad++ highlight word-boundary

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

使用java将Element对象写入文件

我有Element类的数据.我正在尝试将其值写入文件,但我遇到了麻烦:

< Some process to acquire values into the variable "fieldData" >

// Prepare file output
FileWriter fstream = new FileWriter("C:/output.txt");
BufferedWriter out = new BufferedWriter(fstream);

Element field = fieldData.getElement(i);

out.write(field);  // DOESN'T WORK: The method write(int) in the type BufferedWriter is not applicable for the arguments (Element)
out.write(field.getValueAsString()); // DOESN'T WORK: Cannot convert SEQUENCE to String
Run Code Online (Sandbox Code Playgroud)

关于我应该如何处理这个案子的任何建议?另外,对于我来说,看到(即打印到屏幕)可用的静态变量和与对象相关的方法的最佳方法是什么?谢谢.

更多代码片段以帮助调试:

private static final Name SECURITY_DATA = new Name("securityData");
private static final Name FIELD_DATA = new Name("fieldData");

Element securityDataArray = msg.getElement(SECURITY_DATA); // …
Run Code Online (Sandbox Code Playgroud)

java bloomberg data-structures

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

如何使用Spreadsheet :: WriteExcel将以'='开头的字符串写入单元格

我正在使用Perl包Spreadsheet :: WriteExcel来编写Excel文件.我想写一个以等号"= ABC()"开头的字符串到一个单元格.

 $ws->write('A1', '=ABC()');
Run Code Online (Sandbox Code Playgroud)

但是我收到了一条错误消息

 Unknown function ABC() in formula
Run Code Online (Sandbox Code Playgroud)

有人可以提供建议吗?

excel perl spreadsheet

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

如何强制熊猫.loc返回系列

我有一个DataFrame带有NAME索引的熊猫,其中一个列称为CLASS

df = 
        CLASS
NAME    
John    Math
John    Science
Lisa    Music
Run Code Online (Sandbox Code Playgroud)

现在,如果我提取df.loc['John', 'CLASS'],它将返回a Series,但是如果我提取,df.loc['Lisa', 'CLASS']它将返回a str

有没有办法强制我将返回值设为Series(即['Music', ])?我需要迭代通过返回的对象之后的权利,我不想经历MathScience在约翰的情况下(期望),但M, u, s, i, c在莉萨的情况下(不希望)。

python series loc type-coercion pandas

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

Perl Parallel :: ForkManager wait_all_children()花费的时间过长

我有一个使用的脚本Parallel::ForkManager.但是,即使在所有子进程完成后,wait_all_children()进程也需要非常长的时间.我知道的方法是打印一些时间戳(见下文).有谁知道可能导致这种情况的原因(我的机器上有16个CPU内核)?

my $pm = Parallel::ForkManager->new(16);
for my $i (1..16) {
    $pm->start($i) and next;

    ... do something within the child-process ...

    print (scalar localtime), " Process $i completed.\n";
    $pm->finish();
}
print (scalar localtime), " Waiting for some child process to finish.\n"; 
$pm->wait_all_children();
print (scalar localtime), " All processes finished.\n"; 
Run Code Online (Sandbox Code Playgroud)

很明显,我会先得到Waiting for some child process to finish消息,比如说时间戳7:08:35.然后我会得到一个Process i completed消息列表,最后一个消息7:10:30.但是,All Processes finished直到7:16:33(!)我才收到消息.为什么在7:10:30到7:16:33之间有6分钟的延迟?谢谢!

parallel-processing perl time-wait

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

通过 Perl DBI 获取列名

在 SQL Server Management Studio 2008 中,我可以运行

sp_columns MY_TABLE
Run Code Online (Sandbox Code Playgroud)

获取所有列名(在 下COLUMN_NAME)。但是,如何使用 Perl DBI 获取相同的信息?

特别是,我试过

my $result = $dbh->selectall_hashref("sp_columns MY_TABLE", 'COLUMN_NAME');
Run Code Online (Sandbox Code Playgroud)

希望列名是返回散列的键。

事实上,即使那是成功的,这也不是我想要的,因为我需要保留该表中列的顺序。所以我试过了

my $sth = $dbh->prepare("sp_columns $table");
$sth->execute();
while (my @row = $sth->fetchrow_array) {
    # process @row;
}
Run Code Online (Sandbox Code Playgroud)

但两者都不起作用。我收到错误消息

DBD::Sybase::db selectall_hashref failed: Server message number=102 severity=15 state=1 line=1 server=XXXX text=Incorrect syntax near '.'
Run Code Online (Sandbox Code Playgroud)

我也参考了这篇文章。显然,下面的查询也不要在我Management Studio中的工作:

select * from information_schema.columns where table_name = MY_TABLE
Run Code Online (Sandbox Code Playgroud)

错误信息为

Msg 208, Level 16, State 1, Line 2
Invalid …
Run Code Online (Sandbox Code Playgroud)

sql-server perl dbi

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

在rpy中传递R函数参数

我有以下两行代码,它们在R和Python中运行良好(通过Rpy):

[R] rcut = cut(vector, brks)
[Python] rcut = r.cut(vector, brks)
Run Code Online (Sandbox Code Playgroud)

但是,如果我想添加参数include.lowest=TRUE,它在R中按预期运行:

[R] rcut = cut(vector, brks, include.lowest=TRUE)
Run Code Online (Sandbox Code Playgroud)

但它在Rpy中不起作用:

[Python] rcut = r.cut(vector, brks, include_lowest="TRUE")
Run Code Online (Sandbox Code Playgroud)

这给出了以下错误:

rpy.RPy_RException: Error in ok && include.lowest : invalid 'y' type in 'x && y'
Run Code Online (Sandbox Code Playgroud)

你知道是什么原因造成的吗?我该怎么做才能让它发挥作用?谢谢!

python r rpy2

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

从CRAN镜子找不到tseries包

我正在尝试tseries在我的Linux机器上安装软件包.在R,我跑了

> install.packages("tseries")
Run Code Online (Sandbox Code Playgroud)

我被提示有一个镜像站点列表,但无论我选择哪一个(例如79: USA (WA)),它都给了我

Selection: 79
Warning message:
In getDependencies(pkgs, dependencies, available, lib) :
package "tseries" is not available
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?我的R版本是2.9.2.谢谢.

installation r package cran

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

正则表达式如何匹配固定长度且至少包含一个数字的字符串

我需要匹配一个长度为 10 的字符串(除空格之外的任何字符或符号),并且其中至少有一个数字(但位置不确定)。最简单的方法是什么?谢谢!(最好是在 Perl Regex 中,但实际上任何正则表达式都会阐明它。)

一些符合要求的示例字符串:

ABCD1EFGH2
AGD-D.D8HD
1414151502
[TT]88daJh
Run Code Online (Sandbox Code Playgroud)

部分样品不符合要求:

ABCDEFGHIJ        # no digit
EGEGE_(**/        # no digit
asdgja8G          # too short
@#21-GDKJGDE      # too long
Run Code Online (Sandbox Code Playgroud)

谢谢!

更新:需要明确的是,这是一次搜索。输入字符串有数千个字符长。我需要匹配所有包含数字的 10 个字符“单词”。您可以想象一个字符串,其中包含以上 8 个单词,并用空格和制表符分隔。希望搜索仅选出前 4 个。谢谢!

更新的更新:为再次不清楚而道歉(想简化案例,但未能排除其他解释)。此正则表达式搜索的用法将是较长匹配的一部分。例如。一个 10 个字符的单词,至少有一个数字,后跟一个 4 个字符的单词,等等...因此,第一步分割长字符串不太有效。

regex

0
推荐指数
1
解决办法
5321
查看次数