我正在寻找一个正则表达式匹配python中的带连字符的单词.
我能得到的最接近的是:'\ w + - \w + [ - w +]*'
text = "one-hundered-and-three- some text foo-bar some--text"
hyphenated = re.findall(r'\w+-\w+[-\w+]*',text)
Run Code Online (Sandbox Code Playgroud)
返回列表['one-hundered-and-three-','foo-bar'].
这几乎是完美的,除了'三'之后的尾随连字符.我只想要附加连字符,如果后面跟着'单词'.也就是说,而不是'[ - \w +]*',我需要像'( - \w +)*'这样的东西,我认为它会起作用,但不会(它返回['-three,'']).即匹配|后跟连字符后跟单词后跟hyphen_word零次或多次|的东西.
我正在使用Flask开发Web应用程序.我原来是手动编写HTML表单,然后切换到使用WTForms(这是一个教育项目,所以我展示了构建项目的每一步).
尝试添加HTML5表单字段时,我有点困惑,比如EmailField.我搜索了WTForms文档,并在线搜索,我无法找到如何使用HTML5 EmailField创建WTForm.
然后我安装了这个模块https://pypi.python.org/pypi/wtforms-html5,允许它,一切正常.但是我对添加额外的依赖感到不满意,特别是因为它似乎没有积极开发(https://github.com/brutus/wtforms-html5).
然后我结束了WTForms github页面,发现实际上支持所有新的HTML5字段,但默认情况下不会导入这些字段.https://github.com/wtforms/wtforms/blob/master/wtforms/fields/html5.py因此,而不是使用
from WTForms import EmailField
Run Code Online (Sandbox Code Playgroud)
正如人们所推断的那样
from WTForms import TextField
Run Code Online (Sandbox Code Playgroud)
一个人必须使用
from wtforms.fields.html5 import EmailField
Run Code Online (Sandbox Code Playgroud)
我以前使用wtforms-html5模块如下
from wtforms_html5 import EmailField
Run Code Online (Sandbox Code Playgroud)
因此,我更改了所有出现的内容wtforms_html5,wtforms.fields.html5并且我的应用程序完全按预期工作.
好的,感谢您阅读所有背景资料.现在提问:
为什么WTForms文档中没有提到任何html5字段(EmailField,DateField等)?
为什么这些字段默认情况下不会像其他字段一样导入WTForms
这些字段是否稳定/打算使用?
从WTForms导入字段的最佳做法是什么?
对于Text字段,我可以使用以下任何一种方法:
from wtforms import TextField
from wtforms.fields import TextField
from wtforms.fields.simple import TextField
Run Code Online (Sandbox Code Playgroud)
但对于EmailField,我必须使用
from wtforms.fields.html5 import EmailField
Run Code Online (Sandbox Code Playgroud)
我想要:
from wtforms.fields import TextField
from wtforms.fields import EmailField
Run Code Online (Sandbox Code Playgroud)
但是这需要在fields [__init__][1]文件中添加一行,我不愿意这样做,因为它是一个教育项目,这只会让学习者感到困惑.
我在寻找
我正在使用Flask开发一个python应用程序.目前,我希望这个应用程序在本地运行.它通过python在本地运行良好,但是当我使用cx_freeze将其转换为Windows的exe时,我不能再使用Flask.render_template()方法了.我尝试执行render_template的那一刻,我得到一个http 500错误,就像我正在尝试渲染的html模板不存在一样.
主python文件名为index.py.起初我试图跑:cxfreeze index.py.这不包括cxfreeze"dist"目录中Flask项目的"templates"目录.那么我尝试使用这个setup.py脚本并运行python setup.py build.现在包括templates文件夹和index.html模板,但在尝试渲染模板时仍然出现http:500错误.
from cx_Freeze import setup,Executable
includefiles = [ 'templates\index.html']
includes = []
excludes = ['Tkinter']
setup(
name = 'index',
version = '0.1',
description = 'membership app',
author = 'Me',
author_email = 'me@me.com',
options = {'build_exe': {'excludes':excludes,'include_files':includefiles}},
executables = [Executable('index.py')]
)
Run Code Online (Sandbox Code Playgroud)
以下是脚本中的示例方法:
@app.route('/index', methods=['GET'])
def index():
print "rendering index"
return render_template("index.html")
Run Code Online (Sandbox Code Playgroud)
如果我index.py在控制台中运行,我得到:
* Running on http://0.0.0.0:5000/
rendering index
127.0.0.1 - - [26/Dec/2012 15:26:41] "GET / HTTP/1.1" 200 -
127.0.0.1 - …Run Code Online (Sandbox Code Playgroud) 我正在python中编写一个基本的会员Web应用程序.
完全放弃数据库并简单地将python字典挑选到文件(http://docs.python.org/2/library/pickle.html)总是不好的做法吗?该计划永远不应该处理超过ca. 500个成员,并且只会保留关于每个成员的几个字段,所以我不认为缩放是一个问题.由于这个应用程序可能也需要在本地运行,因此如果事情保持尽可能简单,就可以更容易地在各种机器上运行.
所以选项是设置一个mysql数据库,或简单地pickle到一个文件.我更喜欢第二,但想知道这是不是很糟糕.
当我使用wtf_forms和Flask-WTF创建表单并使用IntegerField输入时,我不能将它与Length验证器结合使用
如果我删除长度限制,那么它工作正常.当然我应该能够对IntegerField应用长度验证吗?
Python代码.
from flask_wtf import Form
from wtforms import TextField, PasswordField, IntegerField, validators
class RegistrationForm(Form):
firstname = TextField('First Name', [validators.Required()])
lastname = TextField('Last Name', [validators.Required()])
telephone = IntegerField('Telephone', [validators.Length(min=10, max=10, message="Telephone should be 10 digits (no spaces)")])
TypeError
TypeError: object of type 'int' has no len()
Traceback (most recent call last)
File "C:\Python27\lib\site-packages\flask\app.py", line 1701, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Python27\lib\site-packages\flask\app.py", line 1689, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "C:\Python27\lib\site-packages\flask\app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File …Run Code Online (Sandbox Code Playgroud) 我正在尝试在新选项卡中打开课程报告中的页面。通常我会这样做:
<a href="https://www.coursereport.com/schools/flatiron-school" target="_blank">https://www.coursereport.com/schools/flatiron-school</a>
Run Code Online (Sandbox Code Playgroud)
然而,课程报告正在做一些奇怪的事情。如果我使用该链接,它:
我对感兴趣
我似乎无法直接在 stackoverflow 中重现,但这里有一个 HackMD 文档,您可以在其中查看行为https://hackmd.io/s/Hy1Ln7g8X
我created_at在 postgres 表中有一个日期列。我有一个长时间运行的查询,按周对数据进行分组,因此查询的一部分是
(SELECT TO_CHAR(score.created_at, 'IYYY-IW') AS week,
customer_id, AVG(score) AS avg_week_score FROM score
Run Code Online (Sandbox Code Playgroud)
这是低效的,我想使用 Postgres 12 中新生成的列功能来存储每个插入日期的文本版本。
我试着跑
alter table score add column gen_week text generated always as (TO_CHAR(created_at, 'IYYY-IW')) stored;
Run Code Online (Sandbox Code Playgroud)
但得到
ERROR: generation expression is not immutable
Run Code Online (Sandbox Code Playgroud)
我猜这与 created_at 依赖于语言环境,尤其是时区这一事实有关,所以我尝试了
alter table score add column week_gen text generated always as (TO_CHAR(created_at::timestamptz at time zone 'UTC', 'IYYY-IW')) stored;
Run Code Online (Sandbox Code Playgroud)
使时区明确,但这会产生相同的错误。
有没有办法使 to_char 与日期对象保持不变,或者我是否必须基于 to_char 定义我自己的不可变函数?
可能是一个愚蠢的问题,但我无法弄清楚如何使用带有Flask的python来检索输入字段以外的任何值.例如,我有一个带有元素的html表单:
<form action="/newgame" method="POST">
<input type="text" name="white">
<select>
<option name="result" value="onezero">1-0</option>
<option name="result" value="zeroone">0-1</option>
<option name="result" value="draw">draw</option>
</select>
<input type="text" name="black">
<input type="submit" value="submit">
</form>
Run Code Online (Sandbox Code Playgroud)
在服务器端,如果我调用print request.form.items(True),那么我可以从两个<input type="text">元素中检索值,但不能从元素中检索<select>.
我有一个类似的问题,我希望有一个带有两个提交按钮的表单,然后在服务器端工作,哪个按钮用于提交表单.我也没有运气.
帮助和建议表示赞赏.