requests源碼里面提到,響應頭content-type里面如果有text的話,返回類型是ISO-8859-1,所以你可以這樣試試(親測好用)。
response = requests.request('GET', url)
response.encoding=None
response.text
python3, 直接改成list1_name.append(elements[0])就可以了:
ftele1=open('a.txt', 'r', encoding='utf-8')
ftele2=open('b.txt', 'r', encoding='utf-8')
ftele1.readline() #跳過第一行
ftele2.readline()
lines1 = ftele1.readlines()
lines2 = ftele2.readlines()
list1_name = []
list1_tele = []
list2_name = []
list2_email = []
for line in lines1: #獲取第一個文本中的姓名和電話信息
elements = line.split()
print(elements[0])
list1_name.append(elements[0])
list1_tele.append(elements[1])
for line in lines2: #獲取第二個文本中的姓名和郵箱信息
elements = line.split()
list2_name.append(elements[0])
list2_email.append(elements[1])
#開始處理
lines = []
lines.append('姓名\t 電話\t 郵箱\n')
#按索引方式遍歷姓名列表1
for i in range(len(list1_name)):
s=''
if list1_name[i] in list2_name:
j = list2_name.index(list1_name[i]) #找到姓名列表1對應列表2中國年的姓名索引位置
s = '\t'.join([list1_name[i], list1_tele[i], list2_email[j]])
s += '\n'
else:
s = '\t'.join([list1_name[i], list1_tele[i], str(' ----- ')])
s += '\n'
lines.append(s)
#處理姓名列表2中剩余的姓名
for i in range(len(list2_name)):
s=''
if list2_name[i] not in list1_name:
s = '\t'.join([list2_name[i], str(' ----- '), list2_email[i]])
s += '\n'
lines.append(s)
ftele3 = open('AddrBook.txt', 'w')
ftele3.writelines(lines)
ftele3.close()
ftele1.close()
ftele2.close()
print('The AddressBooks are merged!')
python2 類似,但是頭上加個# encoding=utf-8:
# encoding=utf-8
ftele1=open('a.txt', 'rb')
ftele2=open('b.txt', 'rb')
ftele1.readline()
ftele2.readline()
lines1 = ftele1.readlines()
lines2 = ftele2.readlines()
list1_name = []
list1_tele = []
list2_name = []
list2_email = []
for line in lines1:
elements = line.split()
print(elements[0])
list1_name.append(elements[0])
list1_tele.append(elements[1])
for line in lines2:
elements = line.split()
#print(elements)
list2_name.append(elements[0])
list2_email.append(elements[1])
lines = []
lines.append('姓名\t 電話\t 郵箱\n')
for i in range(len(list1_name)):
s=''
if list1_name[i] in list2_name:
j = list2_name.index(list1_name[i])
s = '\t'.join([list1_name[i], list1_tele[i], list2_email[j]])
s += '\n'
else:
s = '\t'.join([list1_name[i], list1_tele[i], str(' ----- ')])
s += '\n'
lines.append(s)
for i in range(len(list2_name)):
s=''
if list2_name[i] not in list1_name:
s = '\t'.join([list2_name[i], str(' ----- '), list2_email[i]])
s += '\n'
lines.append(s)
ftele3 = open('AddrBook.txt', 'w')
ftele3.writelines(lines)
ftele3.close()
ftele1.close()
ftele2.close()
print('The AddressBooks are merged!')https://stackoverflow.com/que...
終于閑下來了,完善一下答案。
ES 一直以來在堅持的一個原則便是完全避免 breaking changes,畢竟用戶的瀏覽器版本不是編程人員所能干涉的。如果用戶的升級導致某些網(wǎng)站的舊代碼失效了,組委會肯定會被噴死。這點和其他語言很不一樣。因此 Compatibility 是首要原因,新版 ES 必須完全兼容舊版 ES。
Readability 和 Generality 其實都是產生的附加效果。Generality 其實是個偽需求,空 Generator 都可以被有 0 條或 1 條 yield 語句的 Generator 替代,而且后者可讀性比前者更好。Readability 這點 ES 的確實比 Python 的要優(yōu)秀,至少只閱讀函數(shù)頭我便可以知道這是個 Generator 還是 Normal Function,但優(yōu)勢只有在讀長代碼時才明顯。僅憑這些不足以 diss Python 的設計。
而至于 Python 當年為什么沿用了 def,其實沒有過多什么“意義”,僅僅是出于 Guido 的直覺而已:-)(參考 PEP 255)。
crx后綴改成zip解壓。。。
ES6中對象新增方法,屬性名表達式。
let obj = {
['h' + 'ello']() {
return 'hi';
}
};
obj.hello()
常量的寫法只是一種風格,官方文檔也說了,不是必須使用的。
因為你有換行符 .只匹配所有非換行字符 [.\S\s]* 匹配所有
折騰python推薦用conda環(huán)境
肯定會報錯的啊,你json文件里面有多個對象,是無法解析的。要不你就自己把這些對象分開,然后再json.loads() 要不就存在不同的json文件里面
示例:
import json
d1 = {'1':2, '2':3, '3':4}
d2 = {'1':3, '2':4, '3':5}
with open('data.json', 'w') as f:
f.write(json.dumps(d1) + '\n' + json.dumps(d2)) # 用換行分開
# 讀取時自己分開
with open('data.json', 'r') as f:
print(json.loads(f.readline()))
print(json.loads(f.readline()))直接百度python實現(xiàn)郵箱驗證的正則,多找?guī)讉€版本對比驗證下
個人理解空間復雜度為O(1)的歸并排序是指內存方面的空間復雜度,而忽略了堆棧里的O(logN)的空間復雜度(畢竟不在同一個空間)
//空間復雜度為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;
}nums = soup.select('.pc_temp_songlist > ul:nth-of-type(1) > li > span:nth-of-type(3) > strong:nth-of-type(1)')
titles = soup.select('.pc_temp_songlist > ul:nth-of-type(1) > li > a:nth-of-type(4)')
times = soup.select('.pc_temp_songlist > ul:nth-of-type(1) > li > span:nth-of-type(5) > span:nth-of-type(4)')
這個數(shù)據(jù)解析有問題啊,所以當然沒有打印輸出了
你覺得卡住,每次循環(huán)要sleep 7秒,而且輸出為空造成的假象吧
以下代碼供參考:
import requests
from bs4 import BeautifulSoup
url='http://www.kugou.com/yy/rank/...{}-8888.html?from=rank'
def get_info(url):
res=requests.get(url)
soup=BeautifulSoup(res.text,'lxml')
infoes=soup.select('div.pc_temp_songlist ul li ')
for info in infoes:
nums=info.select('span.pc_temp_num')[0].text.strip()
singer,name=info['title'].split('-',1)
times=info.select('span.pc_temp_tips_r span.pc_temp_time')[0].text.strip()
print({'名次':nums,'歌手':singer,'歌名':name,'時長':times})
if __name__=='__main__':
urls = [url.format(i) for i in range(1, 24)]
for url in urls:
get_info(url)
1、可以從下圖中看到,如果是null的話,每一條記錄開始時都會在最前面有額外的字節(jié)標識,如第12列是null,就需要用額外的兩字節(jié) 0800來標識
2、同時如果索引中有null會導致索引不生效
3、做比較是 可能會出現(xiàn) null == 0的不正確結果
c是引用傳遞,times是值傳遞
class Count:
def __init__(self, count=0):
self.count = count
def increment(c, times):
c.count += 1
# print('c:', c.count)
print('c:', id(c))
times += 1
# print('t:', times)
print('t:', id(times))
if __name__ == '__main__':
c = Count()
times = 0
print('times:', id(times))
for i in range(100):
increment(c, times)
可以清晰的看到times和increment里的times不是同一個
你的//tr [contains(@class ,'odd')]/td[7]/div[contains(@class,'bar')]/@title
匹配的是整個屬性,會返回 title="0.182秒", 如果你只想得到屬性值,可以用fn:string函數(shù),
即
speed=etree.HTML(res).xpath("string(//tr [contains(@class ,'odd')]/td[7]/div[contains(@class,'bar')]/@title)")
將返回 0.182秒
@藕絲空間 結果是出來了。
In [128]: sbq = db.session.query(User.email, User.username, func.count(Comment.author_id).label("c_nums
...: ")).filter(User.id==Comment.author_id).subquery()
In [129]: data = db.session.query(User.email, User.username, sbq.c.c_nums).order_by(sbq.c.c_nums.desc()
...: ).distinct().all()
In [130]: for d in data:
...: print(d.email, d.username, d.c_nums)
...:
(u'raymond@dabshots.org', u'shirley', 100L)
(u'cheryl@quaxo.net', u'rachel', 100L)
(u'debra@yoveo.net', u'carol', 100L)
(u'kathleen@kaymbo.com', u'nancy', 100L)
(u'melissa@youtags.org', u'amy', 100L)
(u'margaret@riffwire.net', u'kimberly', 100L)
...
...
但是沒有排序:
In [131]: for i in User.query.all():
...: print i.email, i.username, i.comments.count()
...:
raymond@dabshots.org shirley 2
margaret@riffwire.net kimberly 6
brenda@realbuzz.com ashley 1
lillian@devpulse.name julia 4
linda@babbleopia.biz mildred 3
helen@mycat.name douglas 4
kathleen@kaymbo.com nancy 1
teresa@zoombeat.name melissa 5
evelyn@skalith.com stephanie 6
...
...
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產業(yè)為響應國家深化產教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產業(yè)鏈。利用北京大學優(yōu)質教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。