小编jus*_*ess的帖子

循环中的vba错误处理

vba的新手,尝试'on error goto'但是,我一直在错误'索引超出范围'.

我只想制作一个组合框,其中包含一个包含查询表的工作表的名称.

    For Each oSheet In ActiveWorkbook.Sheets
        On Error GoTo NextSheet:
         Set qry = oSheet.ListObjects(1).QueryTable
         oCmbBox.AddItem oSheet.Name

NextSheet:
    Next oSheet
Run Code Online (Sandbox Code Playgroud)

我不确定问题是否与在循环中嵌套On Error GoTo或如何避免使用循环有关.

error-handling vba

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

在python中解析嵌套括号,按级别获取内容

显然,这个问题在阅读之后会经常出现

正则表达式检测用于&while循环的半冒号终止C++

并且思考了一会儿的问题,我写了一个函数来返回包含在任意数量的嵌套()内的内容

该函数可以很容易地扩展到任何正则表达式对象,在此发布您的想法和注意事项.

任何重构建议将不胜感激

(注意,我仍然是python的新手,并且不想弄清楚如何引发异常或其他什么,所以我只是让函数返回'失败',如果它不能弄清楚发生了什么)

编辑功能以考虑评论:

def ParseNestedParen(string, level):
    """
    Return string contained in nested (), indexing i = level
    """
    CountLeft = len(re.findall("\(", string))
    CountRight = len(re.findall("\)", string))
    if CountLeft == CountRight:
        LeftRightIndex = [x for x in zip(
        [Left.start()+1 for Left in re.finditer('\(', string)], 
        reversed([Right.start() for Right in re.finditer('\)', string)]))]

    elif CountLeft > CountRight:
        return ParseNestedParen(string + ')', level)

    elif CountLeft < CountRight:
        return ParseNestedParen('(' + string, level)

    return string[LeftRightIndex[level][0]:LeftRightIndex[level][1]]
Run Code Online (Sandbox Code Playgroud)

python parsing parentheses

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

python - 支持.send()为一个类?

写一堂课,我该如何实施

foo.send(item)?

__iter__ 允许像生成器一样迭代类,如果我想让它成为一个协程怎么办?

python class coroutine

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

VIM:查找并替换,重用令牌

我在制作适当的查找/替换正则表达式以在vim中使用时遇到问题

这是一些SQL:

select avg(field_name1), avg(field_name2), avg(field_name3) from a_table
Run Code Online (Sandbox Code Playgroud)

哎呀,我忘了别名结果:

select avg(field_name1) field_name1,
avg(field_name2) field_name2, avg(field_name3) field_name3 from a_table
Run Code Online (Sandbox Code Playgroud)

所以,在vim中,我确信有一个方便的查找和替换匹配任意[a-z]\+_[a-z]\+内部括号,但我无法弄清楚如何在整个匹配后放置该令牌

regex vim replace

7
推荐指数
2
解决办法
7253
查看次数

使用 dplyr 的 transmute_all 用列名替换列值

数据集包含许多包含 NA 或 1 值的列,有点像这样:

> data_frame(a = c(NA, 1, NA, 1, 1), b=c(1, NA, 1, 1, NA))
# A tibble: 5 x 2
      a     b
  <dbl> <dbl>
1 NA     1.00
2  1.00 NA   
3 NA     1.00
4  1.00  1.00
5  1.00 NA  
Run Code Online (Sandbox Code Playgroud)

所需的输出:用列名作为字符串替换所有 1 个值,

> data_frame(a = c(NA, 'a', NA, 'a', 'a'), b=c('b', NA, 'b', 'b', NA))
# A tibble: 5 x 2
  a     b    
  <chr> <chr>
1 <NA>  b    
2 a     <NA> 
3 <NA>  b    
4 a …
Run Code Online (Sandbox Code Playgroud)

r dplyr

7
推荐指数
2
解决办法
1834
查看次数

创建集合时处理空 *args 的 pythonic 方法是什么?

定义一个函数,

MyFunction(argument, *args): [为*args 中的arg 对argument[arg] 做一些事情]

如果 *args 为空,则该函数不执行任何操作,但我想设置默认行为“如果 *args == 0 的长度则使用整个集合”

def Export(source, target, *args, sep=','):
    for item in source:
        SubsetOutput(WriteFlatFile(target), args).send(item[0])
Run Code Online (Sandbox Code Playgroud)

我不想在每次迭代中检查 args 的长度,并且在迭代开始之前我无法访问源中 item 的键......

所以,我可以

if len(args) != 0:
   for item in source:

else
   for item in source:
Run Code Online (Sandbox Code Playgroud)

这可能会起作用,但似乎不够“pythonic”?

这是(是否存在)一种标准方法来处理 *args 或 **kwargs 以及当其中一个为空时的默认行为?

更多代码:

def __coroutine(func):
    """
    a decorator for coroutines to automatically prime the routine
    code and method from 'curous course on coroutines and concurrency'
    by david beazley www.dabeaz.com
    """

    def __start(*args, …
Run Code Online (Sandbox Code Playgroud)

python arguments default function function-signature

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

vim:删除除最后一行之外的所有单词

我无法想出一个vim find/replace来删除除了最后一行之外的所有单词,即在一点SQL中,从一堆代码中生成所有别名的列表会很好

select 
column_a alias_a,
column_b alias_b,
column_c alias_c

from 
...
Run Code Online (Sandbox Code Playgroud)

我想生成列表

alias_a, alias_b, alias_c
Run Code Online (Sandbox Code Playgroud)

所以我想我想删除所有没有紧跟逗号和行结尾的单词

vim replace

6
推荐指数
2
解决办法
1896
查看次数

dplyr编程:如何访问地图中的.x列

嵌套一个数据帧并将每个小节转换为一个xts经常发生,足以使其具有应有的功能。

输入数据框应由nest_var嵌套,然后每个嵌套数据框应转换为xts对象顺序。

这是我的尝试

library(tidyverse)
library(purrr)
library(magrittr)
library(xts)
data("sample_matrix")
    df <- sample_matrix %>%
        as.data.frame() %>%
        rownames_to_column(var='dt') %>%
        gather(key=ohlc, value=val, -dt)

nest_xts <- function(df_in, nest_var, t_var) {
    require(rlang)
    nest_var <- enquo(nest_var)
    t_var <- enquo(t_var)

    df_in %>% group_by(!!nest_var) %>%
    nest() %>%
    mutate(data := map(data, ~xts(.x, order.by=.x[quo_name(t_var)])))
}
nest_xts(df, ohlc, dt)
Run Code Online (Sandbox Code Playgroud)

但这不能访问最后一行的mutate map组合中的.x列。

Error in mutate_impl(.data, dots) : 
  Evaluation error: order.by requires an appropriate time-based object. 
Run Code Online (Sandbox Code Playgroud)

还尝试将最后一行更改为

mutate(data := map(data, ~xts(.x, order.by=.x$!!t_var)))
Run Code Online (Sandbox Code Playgroud)

但是函数无法编译;

Error: unexpected '!' in:
"    nest() %>%
    mutate(data := map(data, ~xts(.x, …
Run Code Online (Sandbox Code Playgroud)

r dplyr purrr

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

python:module没有属性mechanize

#!/usr/bin/env python
import mechanize

mech = mechanize.Browser()
page = br.open(SchoolRank('KY'))
Run Code Online (Sandbox Code Playgroud)

得到:

Traceback (most recent call last):
  File "mechanize.py", line 2, in <module>
    import mechanize
  File "/home/jcress/Documents/programming/schooldig/trunk/mechanize.py", line 12, in <module>
    mech = mechanize.Browser()
AttributeError: 'module' object has no attribute 'Browser'
Run Code Online (Sandbox Code Playgroud)

我很困惑.我为2.6和2.7安装了模块,结果相同......

python attributes module mechanize-python

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

SQL (oracle):是否有与 substr 等效的数字字段?

要从oracle sql 中的字符串中检索位置 X 和 Y 之间的字符,我可以

substr(string_var, X, Y)
Run Code Online (Sandbox Code Playgroud)

如果我需要从位置 X 和 Y 之间的数字中获取数字怎么办?(即,如果我想要数字 123456 = 34 中的第三和第四位数字)

我知道我可以

substr(to_char(numeric_var), X, Y)
Run Code Online (Sandbox Code Playgroud)

但是如果我需要将输出视为数字呢?我必须做吗

to_number(substr(to_char(numeric_var), X, Y))
Run Code Online (Sandbox Code Playgroud)

或者是否有与 substr 等效的数字字段?

sql oracle substring

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

python:除了命名空间冲突之外,包导入*是否有缺点

我正在创建一个扩展包的类,在类实例化之前,我不知道我需要包的命名空间的哪个子集.我一直小心避免命名空间冲突我的代码,所以,不

from package import * 
Run Code Online (Sandbox Code Playgroud)

创建问题除了名称冲突?

是否更好地检查类的输入并仅导入我需要的名称(在运行时)__init__

可以从set []导入python吗?

for name in [namespace,namespace]:
    from package import name
Run Code Online (Sandbox Code Playgroud)

有道理吗?

我希望这个问题看起来不像是不必要的手动铃声,我只是对python的新手,并且不想做每一个'开头的指南'说不做的一件事(来自pkg import*),除非我'我相信别无选择.

想法,建议欢迎.

python import namespaces

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

如何编写一个允许使用__name__对实例进行内省的类?

编写一个类Foo,允许其实例返回使用它们创建的名称__name__,

A = Foo(args)

str(A.__name__) 
Run Code Online (Sandbox Code Playgroud)

应该返回'A'

python introspection

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