>>> p = re.compile('\({2}(.*?)\){2}')
>>> p.findall(teststr)
['22222222', '33333333', 'iiiiiii']python解釋器一般在/usr/bin/下面,你的路徑有問題吧。
https://stackoverflow.com/que...
終于閑下來了,完善一下答案。
ES 一直以來在堅持的一個原則便是完全避免 breaking changes,畢竟用戶的瀏覽器版本不是編程人員所能干涉的。如果用戶的升級導(dǎo)致某些網(wǎng)站的舊代碼失效了,組委會肯定會被噴死。這點和其他語言很不一樣。因此 Compatibility 是首要原因,新版 ES 必須完全兼容舊版 ES。
Readability 和 Generality 其實都是產(chǎn)生的附加效果。Generality 其實是個偽需求,空 Generator 都可以被有 0 條或 1 條 yield 語句的 Generator 替代,而且后者可讀性比前者更好。Readability 這點 ES 的確實比 Python 的要優(yōu)秀,至少只閱讀函數(shù)頭我便可以知道這是個 Generator 還是 Normal Function,但優(yōu)勢只有在讀長代碼時才明顯。僅憑這些不足以 diss Python 的設(shè)計。
而至于 Python 當(dāng)年為什么沿用了 def,其實沒有過多什么“意義”,僅僅是出于 Guido 的直覺而已:-)(參考 PEP 255)。
console.log(str.match(/[\u0000-\u00ff]/g)) //半角
console.log(str.match(/[\u4e00-\u9fa5]/g)) //中文
console.log(str.match(/[\uff00-\uffff]/g)) //全角 Accept值設(shè)置的不對
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01'
}正確的 ignore 文件名應(yīng)該是 .gitignore 而不是 java.gitignore
# 因為這個地方涉及到了python中的元類,而我元類理解的不到家
# 所以就不詳細(xì)解釋了,只給樓主說下大致流程吧
# 免得元類那塊說錯了,再誤導(dǎo)樓主
# 因為樓主沒有寫,我就認(rèn)為樓主使用的插件是flask-wtf了
# 直接看Form的父類 flask_wtf.form.FlaskForm 和 wtforms.form就可以了
# 在 flask_wtf.form.FlaskForm 中定義了一個 Meta 內(nèi)部類
# 在這個內(nèi)部類中有如下方法,就是在這個方法中獲取的表單中的值的
def wrap_formdata(self, form, formdata):
if formdata is _Auto:
if _is_submitted():
if request.files:
return CombinedMultiDict((
request.files, request.form
))
elif request.form:
return request.form
elif request.get_json():
return ImmutableMultiDict(request.get_json())
return None
return formdata
# 然后在wtforms.form.BaseForm中通過如下方法,為自定義的每個filed賦值
def process(self, formdata=None, obj=None, data=None, **kwargs):
# 這個就是form表單中的內(nèi)容了
formdata = self.meta.wrap_formdata(self, formdata)
if data is not None:
kwargs = dict(data, **kwargs)
# 這里通過form表單中的值,為每個自定義filed賦值
for name, field, in iteritems(self._fields):
if obj is not None and hasattr(obj, name):
field.process(formdata, getattr(obj, name))
elif name in kwargs:
field.process(formdata, kwargs[name])
else:
field.process(formdata)
# 注:
# 如下操作確實是會創(chuàng)建一個新的對象,但是因為這個新的對象中的 __init__ 方法
# 是會對這個對象進(jìn)行一定初始化的,而這個初始化的過程中會通過如上方式
# 獲取form表單中的值,并賦值給每個filed
# 所以才會出現(xiàn) POST 請求時 form.validate_on_submit() 為 True
form = NameForm()自問自答下。
我提這個問題的需求是使用python調(diào)用外部的第三方程序,類似shell腳本一樣。
如果是正常的多進(jìn)程編程協(xié)作完成一個任務(wù),那么當(dāng)然最好的方式是兩個進(jìn)程協(xié)作,即使用IPC的方式使父進(jìn)程傳遞給子進(jìn)程結(jié)束的信息,然后子進(jìn)程自己優(yōu)雅的退出。
而如果使用python調(diào)用外部的第三方命令,將其作為類似shell腳本的方式使用,由于無法修改外部程序的代碼,因此IPC的手段非常有限,僅僅限于向子進(jìn)程發(fā)送信號。
那么該問題的思路就很清晰了,我之前有一次是使用terminate()函數(shù)結(jié)束子進(jìn)程導(dǎo)致了子進(jìn)程無法正常釋放資源(linux系統(tǒng))。通過查詢文檔可知terminate()函數(shù)在linux系統(tǒng)下的行為是向進(jìn)程發(fā)送SIGTERM。那么,問題的原因則是該第三方程序接收到SIGTERM信號后的處理邏輯有問題。
因此,結(jié)束該進(jìn)程最好的方式是使用該第三方程序能夠接受的方式,這通過查閱該第三方程序的文檔可以得到。
比如說,命令行程序?qū)IGINT信號的考慮更完善,因為在終端使用時按Ctrl-C發(fā)送的就是SIGINT信號。因此,對于大部分的第三方程序,發(fā)送SIGINT信號更好:
p.process.signal(signal.SIGINT)
以我的項目為例——基于 flask 的 CRUD 操作
其中 models.py 里的定義如下(源碼地址:https://github.com/eastossifrage/flask-wtf-crud/blob/basic/app/models.py:
class User(db.Model):
'''Example for crud
以用戶為例,來展示 CRUD 操作!
'''
__tablename__ = 'crud'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True, index=True)
email = db.Column(db.String(64), unique=True, index=True)
status = db.Column(db.Boolean, default=False)
role = db.Column(db.Boolean, default=False)
def __repr__(self):
return '<User %r>' % self.username
根據(jù)你的例子,你的 User 和 Role 兩個類中,前者沒有定義 __repr__(self),而后者定義了 __repr__(self) 類,所以造成你的顯示結(jié)果出現(xiàn)了不同的情況。
再者,建議看看資料,定義類的時候,注意一下 __repr__(self) 和 __str__(self) 兩個屬性。
簡單的說__repr__(self)是面向程序員的,而__str__(self)是面向用戶的。
最后,送你個福利http://blog.csdn.net/luckytanggu/article/details/53649156
DEBUG=False 下,要python manage.py collectstatic
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
# Make the grid
x, y, z = np.meshgrid(np.array([1]),
np.array([1]),
np.array([1])) #起點(1, 1, 1)
# Make the direction data for the arrows
u = np.array([2])
v = np.array([4])
w = np.array([5]) # 方向(2, 4, 5)
ax.quiver(x, y, z, u, v, w, length=1, normalize=True) # 模長1
ax.set_xlim(0, 2)
ax.set_ylim(0, 2)
ax.set_zlim(0, 2)
plt.show()if int(mstr) == mint:
print 'same'
你自己已經(jīng)寫出來了啊, mstr不知道類型是什么,如果不能轉(zhuǎn)換成int,會報ValueError,如果不想報異常
try:
if int(mstr) == mint:
print 'same'
except ValueError:
print mstr
還是你的意思是想先判斷類型?
if type(mstr) == type(mint):
if mstr == mint:
print 'same'
else:
print 'value not same'
else:
print 'type not same'
還是你既不想先判斷類型,還想報錯,函數(shù)重載?
class myint(int):
def __eq__(self, other):
if isinstance(other, int):
return int(self) == other
else:
print 'type not same'
return False
mint = myint(1)
1 == mint
mstr == mint出發(fā)點為: 在不可知數(shù) 多查詢條件下,怎么用torndo進(jìn)行查詢
自己研究了一下,用**kwargs方式解決了,
# python新手,代碼寫得不好,見笑!
import my_torndb as torndb # 用的py3,修改了torndb的代碼
conn = torndb.Connection('127.0.0.1', 'test', user='root', password='123456')
def get_where_template(**kwargs):
where_template = ''
if len(kwargs) > 0:
where_template += " WHERE " + " AND ".join(map(lambda x: "%s like %%(%s)s" % (x, x), kwargs))
return where_template
def get_list(**kwargs):
sql = 'select * from users ' + get_where_template(**kwargs)
print(sql)
row = conn.query(sql, **kwargs)
for x in row:
print(x.get('name'))
get_list(id='1')
print('-------------------')
get_list(name='%%張%%', title='%%管理%%', role_id=1)幫你測了一下,應(yīng)該是找不到提交按鈕導(dǎo)致的。
你暫時使用回車來解決這個問題吧,原因我也沒搞明白。
...
from selenium.webdriver.common.keys import Keys
def search():
...
# sub = ...
input.send_keys(u'金融書籍')
input.send_keys(Keys.ENTER)
# sub.click()
...
補(bǔ)充:記得最后把driver關(guān)掉。
后來發(fā)現(xiàn)是繼承的模版里面寫URL出錯?,已解決
telnet協(xié)議首先會建立tcp連接.
tcp連接的三個信號
c->s syn
c<- syn ack
c->s ack
其中第一個信號,如果服務(wù)端沒有監(jiān)聽的話是不會返回syn ack的.所以利用了這個特性來檢測端口是否啟動(在監(jiān)聽)
個人理解空間復(fù)雜度為O(1)的歸并排序是指內(nèi)存方面的空間復(fù)雜度,而忽略了堆棧里的O(logN)的空間復(fù)雜度(畢竟不在同一個空間)
//空間復(fù)雜度為O(1)的歸并排序
#include <iostream>
using namespace std;
void reverse_array(int a[], int n) {
int i = 0;
int j = n - 1;
while (i < j) {
swap(a[i], a[j]);
++i;
--j;
}
}
void exchange(int a[], int length, int length_left) {
reverse_array(a, length_left);
reverse_array(a + length_left, length - length_left);
reverse_array(a, length);
}
void Merge(int a[], int begin, int mid, int end) {
while (begin < mid && mid <= end) {
int step = 0;
while (begin < mid && a[begin] <= a[mid])
++begin;
while (mid <= end && a[mid] <= a[begin]) {
++mid;
++step;
}
exchange(a + begin, mid - begin, mid - begin - step);
}
}
void MergeCore(int a[], int left, int right) {
if (left < right) {
int mid = (left + right) / 2;
MergeCore(a, left, mid);
MergeCore(a, mid + 1, right);
Merge(a, left, mid + 1, right);
}
}
void MergeSort(int a[], int length) {
if (a == NULL || length < 1)
return;
MergeCore(a, 0, length - 1);
}
int main() {
int a[] = {1,0,2,9,3,8,4,7,6,5,11,99,22,88,11};
int length = sizeof(a) / sizeof(int);
MergeSort(a, length);
for (int i = 0; i < length; i++)
cout << a[i] << " ";
cout << endl;
return 0;
}北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。