小编emh*_*emh的帖子

使用requirements.txt进行安装时,停止单个包上的pip失败

我正在从requirements.txt安装包

pip install -r requirements.txt

requirements.txt文件读取:

Pillow
lxml
cssselect
jieba
beautifulsoup
nltk
Run Code Online (Sandbox Code Playgroud)

lxml是唯一一个无法安装的软件包,这导致一切都失败了(预期结果如评论中的larsks所指出的).但是,lxml失败后pip仍会运行并下载其余的软件包.

根据我的理解,pip install -r requirements.txt如果requirements.txt无法安装中列出的任何软件包,该命令将失败.

在运行时是否可以传递任何参数pip install -r requirements.txt,告诉它安装它可以并跳过它不能的包,或者一看到它失败就立即退出?

python pip

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

Ubuntu上的Python 2.7

我是Python新手,正在使用Linux机器(Ubuntu 10.10).它正在运行python 2.6,但我想运行2.7因为它有我想要使用的功能.我被敦促不安装2.7并将其设置为我的默认python.

我的问题是,如何安装2.7并与2.6并排运行?

python ubuntu python-2.7

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

用nltk改进人名的提取

我试图从文本中提取人名.

有没有人有他们推荐的方法?

这就是我尝试的(代码如下):我nltk用来查找标记为人的所有内容,然后生成该人的所有NNP部分的列表.我正在跳过那些只有一个NNP的人,这可以避免抓住一个单独的姓氏.

我得到了不错的结果但是想知道是否有更好的方法来解决这个问题.

码:

import nltk
from nameparser.parser import HumanName

def get_human_names(text):
    tokens = nltk.tokenize.word_tokenize(text)
    pos = nltk.pos_tag(tokens)
    sentt = nltk.ne_chunk(pos, binary = False)
    person_list = []
    person = []
    name = ""
    for subtree in sentt.subtrees(filter=lambda t: t.node == 'PERSON'):
        for leaf in subtree.leaves():
            person.append(leaf[0])
        if len(person) > 1: #avoid grabbing lone surnames
            for part in person:
                name += part + ' '
            if name[:-1] not in person_list:
                person_list.append(name[:-1])
            name = ''
        person = []

    return …
Run Code Online (Sandbox Code Playgroud)

python nlp nltk

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

Python:为什么泡菜?

我一直在使用泡菜,非常高兴,然后我看到这篇文章:不要腌制你的数据

进一步阅读它似乎:

我已经切换到将数据保存为JSON,但我想了解最佳实践:

鉴于所有这些问题,你何时会使用泡菜?具体情况需要什么?

python pickle

26
推荐指数
2
解决办法
8031
查看次数

在列表列表中查找重复项

我正在使用Python 2.7,我正在尝试重复删除列表列表并合并重复项的值.

现在我有:

original_list = [['a', 1], ['b', 1], ['a', 1], ['b', 1], ['b', 2], ['c', 2], ['b', 3]]
Run Code Online (Sandbox Code Playgroud)

我想匹配每个嵌套列表的第一个元素,然后添加第二个元素的值.我想最终得到这个(最终列表的顺序无关紧要):

ideal_output = [['a', 2], ['b', 7], ['c', 2]]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有一些代码将根据每个嵌套列表的第一个元素找到重复值:

for item in original_list:
    matches = -1
    for x in original_list:
        if (item[0] == x[0]):
            matches += 1
    if matches >= 1: 
        if item[0] not in duplicates_list:
            duplicates_list.append(item[0])
Run Code Online (Sandbox Code Playgroud)

从这里我需要搜索original_list中的所有duplicates_list项并添加值,但我不确定最好的方法是什么.

python list python-2.7

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

使用python作为字典从postgresql查询

我正在使用Python 2.7和postgresql 9.1.试图从查询中获取字典,我已经尝试了这里描述的代码:http: //wiki.postgresql.org/wiki/Using_psycopg2_with_PostgreSQL

import psycopg2
import psycopg2.extras
conn = psycopg2.connect("dbname=mydb host=localhost user=user password=password")
cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
cur.execute ("select * from port")
type(cur.fetchall())
Run Code Online (Sandbox Code Playgroud)

它打印下一个答案:

<type 'list'>
Run Code Online (Sandbox Code Playgroud)

打印项目本身,告诉我它是列表.除外答案是字典.

编辑:

尝试下一个:

ans = cur.fetchall()[0]
print ans
print type(ans)
Run Code Online (Sandbox Code Playgroud)

回报

[288, 'T', 51, 1, 1, '192.168.39.188']
<type 'list'>
Run Code Online (Sandbox Code Playgroud)

python postgresql dictionary psycopg2 python-2.7

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

让python和流星说话的最好方法

我想在meteor(版本0.8)中构建一个调用python脚本的项目,该脚本又将一些数据发送回去meteor.我不确定目前这样做的最佳做法是什么.

DDP看起来不错:
"客户端可以用来通过它的DDP协议与Meteor通信,来自Meteor堆栈外部." 但python实现看起来未完成:python-ddp-client

我想我也可以直接写mongodb,python但听起来不是最好的主意:

我错过了什么吗?有一个更好的方法吗?

python meteor

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

Python:用unidecode解决unicode地狱

我一直在研究如何将文本压缩成ascii.所以ā - > añ - > n

unidecode 对此非常棒.

# -*- coding: utf-8 -*-
from unidecode import unidecode
print(unidecode(u"?, ?, ?, ?, ñ"))
print(unidecode(u"Estado de São Paulo"))
Run Code Online (Sandbox Code Playgroud)

生产:

a, i, u, s, n
Estado de Sao Paulo
Run Code Online (Sandbox Code Playgroud)

但是,我无法使用输入文件中的数据复制此结果.

test.txt文件的内容:

?, ?, ?, ?, ñ
Estado de São Paulo
Run Code Online (Sandbox Code Playgroud)

# -*- coding: utf-8 -*-
from unidecode import unidecode
with open("test.txt", 'r') as inf:
    for line in inf:
        print unidecode(line.strip())
Run Code Online (Sandbox Code Playgroud)

生产:

A, A<<, A<<, A, A+-
Estado de …
Run Code Online (Sandbox Code Playgroud)

python unicode

12
推荐指数
2
解决办法
6215
查看次数

在Docker Alpine上安装seaborn

我想seaborn用这个Dockerfile 安装:

FROM alpine:latest

RUN apk add --update python py-pip python-dev 

RUN pip install seaborn

CMD python
Run Code Online (Sandbox Code Playgroud)

我得到的错误与numpyscipy(需要seaborn)有关.它始于:

/tmp/easy_install-nvj61E/numpy-1.11.1/setup.py:327:UserWarning:无法识别setuptools的命令,则进行与生成用Cython源和扩大模板

最后以

在get_mathlib_info中的文件"numpy/core/setup.py",第654行

RuntimeError:破坏的工具链:无法链接简单的C程序

命令"python setup.py egg_info"失败,错误代码为1/tmp/pip-build-DZ4cXr/scipy /

命令'/ bin/sh -c pip install seaborn'返回非零代码:1

知道如何解决这个问题吗?

numpy docker seaborn alpine-linux

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

用nltk分割句子,同时保留引号

我正在使用nltk将文本拆分为句子单元.但是,我需要将包含引号的句子作为单个单元提取.现在每个句子,即使它在一个引用中,也被提取为一个单独的部分.

这是我尝试作为单个单元提取的一些示例:

"This is a sentence. This is also a sentence," said the cat.
Run Code Online (Sandbox Code Playgroud)

现在我有这个代码:

import nltk.data
tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')

text = 'This is a sentence. This is also a sentence," said the cat.'

print '\n-----\n'.join(tokenizer.tokenize(text, realign_boundaries=True))
Run Code Online (Sandbox Code Playgroud)

这很好用,但即使引号本身包含多个句子,我也想维持带引号的句子.

上面的代码产生:

This is a sentence.
-----
This is also a sentence," said the cat.
Run Code Online (Sandbox Code Playgroud)

我试图将整个文本提取为一个单元:

"This is a sentence. This is also a sentence," said the cat.
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以使用nltk执行此操作,还是应该使用正则表达式?我对nltk入门是多么容易感到印象深刻,但现在被卡住了.

python regex nltk python-2.7

8
推荐指数
1
解决办法
1710
查看次数