我需要在字符串中用空格替换字符"»",但我仍然会收到错误.这是我使用的代码:
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
# other code
soup = BeautifulSoup(data, 'lxml')
mystring = soup.find('a').text.replace(' »','')
Run Code Online (Sandbox Code Playgroud)
UnicodeEncodeError:'ascii'编解码器无法对位置13中的字符u'\ xbb'进行编码:序数不在范围内(128)
但如果我用其他脚本测试它:
# -*- coding: utf-8 -*-
a = "hi »"
b = a.replace('»','')
Run Code Online (Sandbox Code Playgroud)
有用.为什么这个?
根据这个答案,我可以使用 Range 标头仅下载 html 页面的一部分,但使用以下代码:
import requests
url = "http://stackoverflow.com"
headers = {"Range": "bytes=0-100"} # first 100 bytes
r = requests.get(url, headers=headers)
print r.text
Run Code Online (Sandbox Code Playgroud)
我得到了整个 html 页面。为什么它不起作用?
我发现了一个有趣的算法来计算这个站点的汉明距离:
def hamming2(x,y):
"""Calculate the Hamming distance between two bit strings"""
assert len(x) == len(y)
count,z = 0,x^y
while z:
count += 1
z &= z-1 # magic!
return count
Run Code Online (Sandbox Code Playgroud)
关键是这个算法只适用于位串,我试图比较两个二进制字符串,但它们是字符串格式,如
'100010'
'101000'
Run Code Online (Sandbox Code Playgroud)
如何使它们与此算法一起使用?
我有一个巨大的网址列表,都是这样的:
http://www.example.com/site/section1/VAR1/VAR2
Run Code Online (Sandbox Code Playgroud)
其中VAR1和VAR2是网址的动态元素.我想要做的是从这个url字符串中只提取VAR1.我试过使用urlparse,但输出看起来像这样:
ParseResult(scheme='http', netloc='www.example.com', path='/site/section1/VAR1/VAR2', params='', query='', fragment='')
Run Code Online (Sandbox Code Playgroud) 我有这样的站点地图:http://www.site.co.uk/sitemap.xml,其结构如下:
<sitemapindex>
<sitemap>
<loc>
http://www.site.co.uk/drag_it/dragitsitemap_static_0.xml
</loc>
<lastmod>2015-07-07</lastmod>
</sitemap>
<sitemap>
<loc>
http://www.site.co.uk/drag_it/dragitsitemap_alpha_0.xml
</loc>
<lastmod>2015-07-07</lastmod>
</sitemap>
...
Run Code Online (Sandbox Code Playgroud)
我想从中提取数据.首先,我需要计算有多少<sitemap>是在XML,然后为他们每个人,提取<loc>和<lastmod>数据.有没有一种简单的方法在Python中执行此操作?
我已经看到过这样的其他问题但是所有问题都提取了例如<loc>xml中的每个元素,我需要从每个元素中单独提取数据.
我试过lxml用这个代码:
import urllib2
from lxml import etree
u = urllib2.urlopen('http://www.site.co.uk/sitemap.xml')
doc = etree.parse(u)
element_list = doc.findall('sitemap')
for element in element_list:
url = store.findtext('loc')
print url
Run Code Online (Sandbox Code Playgroud)
但是element_list空的.
我有这个脚本来并行处理一些URL:
import multiprocessing
import time
list_of_urls = []
for i in range(1,1000):
list_of_urls.append('http://example.com/page=' + str(i))
def process_url(url):
page_processed = url.split('=')[1]
print 'Processing page %s'% page_processed
time.sleep(5)
pool = multiprocessing.Pool(processes=4)
pool.map(process_url, list_of_urls)
Run Code Online (Sandbox Code Playgroud)
该列表是有序的,但是当我运行它时,脚本不会按顺序从列表中选择URL:
import multiprocessing
import time
list_of_urls = []
for i in range(1,1000):
list_of_urls.append('http://example.com/page=' + str(i))
def process_url(url):
page_processed = url.split('=')[1]
print 'Processing page %s'% page_processed
time.sleep(5)
pool = multiprocessing.Pool(processes=4)
pool.map(process_url, list_of_urls)
Run Code Online (Sandbox Code Playgroud)
相反,我希望它首先处理第1,2,3,4页,然后继续按照列表中的顺序进行处理。是否可以选择执行此操作?
from datetime import datetime, timedelta
current_time = datetime.now().time()
new_time = current_time - timedelta(seconds=10)
>> TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.timedelta'
Run Code Online (Sandbox Code Playgroud)
如何从datetime.time对象中减去时间?此代码似乎仅适用于datetime.datetime对象.
我正在尝试使用PHP运行一个简单的shell命令。我在OS X Yosemite上使用XAMPP,这是我的脚本
<?php
$output = shell_exec(PHP_BINDIR.'/ffmpeg 2>&1');
echo "<pre>$output</pre>";
?>
Run Code Online (Sandbox Code Playgroud)
我已经将ffmpeg可执行文件放入其中,/Applications/XAMPP/xamppfiles/bin但是当我运行它时,我在页面上而不是shell输出中看到了此错误:
dyld: Symbol not found: _sqlite3_intarray_bind
Referenced from: /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
Expected in: /Applications/XAMPP/xamppfiles/lib/libsqlite3.dylib
in /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
Run Code Online (Sandbox Code Playgroud)
此错误是什么意思?为何涉及Sqlite3?
我使用的API为我提供了一个结构如下的JSON文件:
{
offset: 0,
results: [
{
source_link: "http://www.example.com/1",
source_link/_title: "Title example 1",
source_link/_source: "/1",
source_link/_text: "Title example 1"
},
{
source_link: "http://www.example.com/2",
source_link/_title: "Title example 2",
source_link/_source: "/2",
source_link/_text: "Title example 2"
},
...
Run Code Online (Sandbox Code Playgroud)
我在Python中使用此代码来提取我需要的数据:
import json
import urllib2
u = urllib2.urlopen('myapiurl')
z = json.load(u)
u.close
link = z['results'][1]['source_link']
title = z['results'][1]['source_link/_title']
Run Code Online (Sandbox Code Playgroud)
问题是要使用它我必须知道从中提取数据的元素的数量.我results每次都可以有不同的长度,所以我想要做的是先计算元素的数量results,这样我就可以设置一个循环来从每个元素中提取数据.
我有一个这样的词典列表:
lst = [
{'id': 1, 'language': 'it'},
{'id': 2, 'language': 'en'},
{'id': 3, 'language': 'es'},
{'id': 4, 'language': 'en'}
]
Run Code Online (Sandbox Code Playgroud)
我想移动language != 'en'列表末尾的每个字典,同时保持其他结果的顺序.所以列表应该如下所示:
lst = [
{'id': 2, 'language': 'en'},
{'id': 4, 'language': 'en'},
{'id': 1, 'language': 'it'},
{'id': 3, 'language': 'es'}
]
Run Code Online (Sandbox Code Playgroud)