小编Hyp*_*ion的帖子

Python - 替换字符串中的非ascii字符(»)

我需要在字符串中用空格替换字符"»",但我仍然会收到错误.这是我使用的代码:

# -*- 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)

有用.为什么这个?

python regex string encoding decoding

14
推荐指数
2
解决办法
1万
查看次数

Python - 请求 HTTP 范围不起作用

根据这个答案,我可以使用 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 页面。为什么它不起作用?

python python-requests

9
推荐指数
1
解决办法
1万
查看次数

两个二进制字符串之间的汉明距离不起作用

我发现了一个有趣的算法来计算这个站点的汉明距离:

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)

如何使它们与此算法一起使用?

python binary bit hamming-distance

6
推荐指数
3
解决办法
3万
查看次数

Python - 将url拆分为其组件

我有一个巨大的网址列表,都是这样的:

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)

python regex urlparse

6
推荐指数
2
解决办法
6135
查看次数

使用Python解析XML Sitemap

我有这样的站点地图: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空的.

python xml parsing

6
推荐指数
2
解决办法
7634
查看次数

multiprocessing pool.map不按顺序处理列表

我有这个脚本来并行处理一些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页,然后继续按照列表中的顺序进行处理。是否可以选择执行此操作?

python multiprocessing python-multiprocessing

6
推荐指数
1
解决办法
3017
查看次数

从datetime.time对象中减去时间

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对象.

python datetime

6
推荐指数
1
解决办法
2054
查看次数

优胜美地-dyld上XAMPP的Shell命令错误:找不到符号:_sqlite3_intarray_bind

我正在尝试使用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?

php xampp shell ffmpeg

5
推荐指数
0
解决办法
383
查看次数

Python - 在提取数据之前计算JSON元素

我使用的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,这样我就可以设置一个循环来从每个元素中提取数据.

python json

5
推荐指数
1
解决办法
2万
查看次数

Python - 将字典列表中的元素移动到列表的末尾

我有一个这样的词典列表:

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)

python sorting dictionary list

5
推荐指数
1
解决办法
895
查看次数