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或如何避免使用循环有关.
显然,这个问题在阅读之后会经常出现
并且思考了一会儿的问题,我写了一个函数来返回包含在任意数量的嵌套()内的内容
该函数可以很容易地扩展到任何正则表达式对象,在此发布您的想法和注意事项.
任何重构建议将不胜感激
(注意,我仍然是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) 写一堂课,我该如何实施
foo.send(item)?
__iter__ 允许像生成器一样迭代类,如果我想让它成为一个协程怎么办?
我在制作适当的查找/替换正则表达式以在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]\+内部括号,但我无法弄清楚如何在整个匹配后放置该令牌
数据集包含许多包含 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) 定义一个函数,
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) 我无法想出一个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)
所以我想我想删除所有没有紧跟逗号和行结尾的单词
嵌套一个数据帧并将每个小节转换为一个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) #!/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安装了模块,结果相同......
要从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 等效的数字字段?
我正在创建一个扩展包的类,在类实例化之前,我不知道我需要包的命名空间的哪个子集.我一直小心避免命名空间冲突我的代码,所以,不
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*),除非我'我相信别无选择.
想法,建议欢迎.
编写一个类Foo,允许其实例返回使用它们创建的名称__name__,
A = Foo(args)
str(A.__name__)
Run Code Online (Sandbox Code Playgroud)
应该返回'A'