在第一次出现分隔符时拆分字符串的最佳方法是什么?
例如:
"123mango abcd mango kiwi peach"
Run Code Online (Sandbox Code Playgroud)
分裂第一个mango得到:
"abcd mango kiwi peach"
Run Code Online (Sandbox Code Playgroud) 我正在写一些javascript(一个greasemonkey/userscript),它会将一些输入字段插入到网站上的表单中.
问题是,我不希望这些输入字段以任何方式影响表单,我不希望在提交表单时提交它们,我只希望我的javascript可以访问它们的值.
有没有什么方法可以将一些输入字段添加到表单的中间,而不是在提交表单时提交它们?
显然理想的事情是输入字段不在表单元素中,但我希望我的结果页面的布局使我插入的输入字段出现在原始表单的元素之间.
我有一个包含多个蜘蛛的scrapy项目.有什么方法可以定义哪些管道用于哪个蜘蛛?并非我所定义的所有管道都适用于每个蜘蛛.
谢谢
我创建了一个新的存储库,然后运行了git add -A.然后我注意到有一个文件夹包含大约100个不应该包含的文件,因此我将其添加到.gitignore.
我现在如何清除暂存区域,以便我可以add再次考虑更新后的所有文件.gitignore?
如果尚未生成样式引用的元素,是否可以从页面的外部CSS获取值?(该元素将动态生成).
我见过的jQuery方法是$('element').css('property');,但这依赖于element在页面上.有没有办法找出CSS中的属性设置而不是元素的计算样式?
我是否必须做一些丑陋的事情,比如在我的页面中添加元素的隐藏副本,以便我可以访问其样式属性?
关于cookies如何与Scrapy一起工作,以及如何管理这些cookie,我有点困惑.
这基本上是我正在尝试做的简化版本:

当您访问该网站时,您将获得一个会话cookie.
当您进行搜索时,网站会记住您搜索的内容,因此当您执行类似于进入下一页结果的操作时,它会知道它正在处理的搜索.
我的蜘蛛有一个searchpage_url的起始网址
请求parse()搜索页面,并将搜索表单响应传递给search_generator()
search_generator()那么yield很多搜索请求使用FormRequest和搜索表单响应.
每个FormRequests和后续子请求都需要拥有自己的会话,因此需要拥有自己的cookiejar和自己的会话cookie.
我已经看到了文档的一部分,它讨论了一个阻止cookie被合并的元选项.这究竟意味着什么?是否意味着提出请求的蜘蛛将在其余生中拥有自己的cookiejar?
如果cookie是按蜘蛛级别进行的,那么当生成多个蜘蛛时它是如何工作的?是否有可能只使第一个请求生成器产生新的蜘蛛,并确保从那时起只有该蜘蛛处理未来的请求?
我假设我必须禁用多个并发请求..否则一个蜘蛛会在同一会话cookie下进行多次搜索,未来的请求只会涉及最近的搜索?
我很困惑,任何澄清都会受到极大的欢迎!
我刚才想到的另一个选择是完全手动管理会话cookie,并将其从一个请求传递到另一个请求.
我想这意味着禁用cookie ..然后从搜索响应中获取会话cookie,并将其传递给每个后续请求.
这是你在这种情况下应该做的吗?
git filter-branch --env-filter '
export GIT_AUTHOR_EMAIL="foo@example.com"
export GIT_AUTHOR_NAME="foo"' -- commita..commitb
Run Code Online (Sandbox Code Playgroud)
结果是 Which ref do you want to rewrite?
因此,似乎filter-branch不允许您使用范围表示法使用两个任意引用之间的范围.
如果不可能采用这种方法,那么在一系列连续提交(分支历史中某处)上运行过滤器的最直接方法是什么.
是否可以获取传递给函数的变量的原始变量名?例如
foobar = "foo"
def func(var):
print var.origname
Run Code Online (Sandbox Code Playgroud)
以便:
func(foobar)
Run Code Online (Sandbox Code Playgroud)
返回:
>>foobar
编辑:
我所要做的就是做一个像下面这样的函数:
def log(soup):
f = open(varname+'.html', 'w')
print >>f, soup.prettify()
f.close()
Run Code Online (Sandbox Code Playgroud)
..并让函数从传递给它的变量的名称生成文件名.
我想如果不可能我只需要每次都将变量和变量的名称作为字符串传递.
我有一个表单,只有在清理后才需要验证.
你跑的时候会发生什么form.is_valid()?表单是否已清理,然后表单的已清理版本已经过验证?
我现在得到的行为是,如果我的领域在清洁之前没有通过验证,即使清洁会让它通过,也会is_valid()返回False.
难道我做错了什么?
# View
class ContactForm(forms.Form):
message = forms.CharField(widget=forms.Textarea, max_length=5)
def clean_message(self):
message = self.cleaned_data['message']
return message.replace('a', '') # remove all "a"s from message
def contact(request):
if request.method == 'POST':
if form.is_valid():
return HttpResponseRedirect('/contact/on_success/')
else:
return HttpResponseRedirect('/contact/on_failure/')
Run Code Online (Sandbox Code Playgroud)
如果邮件少于5个字符不包括我想要form.is_valid()返回!Truea
是否可以clean_<fieldname>()追赶to_python()但之前run_validators()?或者我应该采取其他方式吗?
我注意到在编译CoffeeScript时,没有保留任何单行注释.
这是有问题的,因为我正在尝试在CoffeeScript中编写greasemonkey/userscript,并且它们依赖于元数据块的注释.
我尝试过使用反引号,但是注释的反引号似乎有问题:
`// ==UserScript==
// @version 1.0
// ==/UserScript==`
alert "hello world"
Run Code Online (Sandbox Code Playgroud)
变
// ==UserScript==
// @version 1.0
// ==/UserScript==;alert("hello world");
Run Code Online (Sandbox Code Playgroud)
如果我在结束反击之前添加额外的一行,我得到:
// ==UserScript==
// @version 1.0
// ==/UserScript==
;alert("hello world");
Run Code Online (Sandbox Code Playgroud)
拥有自动包装的便利也很好..但我想如果没有-bare元数据块也会被包装.
有没有更好的方法来解决这个问题?
python ×4
javascript ×3
git ×2
scrapy ×2
userscripts ×2
coffeescript ×1
comments ×1
cookies ×1
css ×1
django ×1
django-forms ×1
forms ×1
function ×1
git-add ×1
gitignore ×1
greasemonkey ×1
html ×1
jquery ×1
session ×1
split ×1
validation ×1
variables ×1
web-crawler ×1