小编Bha*_*rel的帖子

在词形还原中应用多个 pos 参数

我有一根绳子。我想对其应用词形还原。

str = "i want better dogs"

str = str.split(" ") 
for w in str: wordnet_lemmatizer.lemmatize(w)
Run Code Online (Sandbox Code Playgroud)

我得到输出:

我想要更好的狗

当我运行这个循环时:

for w in str: 
    wordnet_lemmatizer.lemmatize(w,pos='a')
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

我想要好狗

块引用

我想要的是两个循环的组合。即 ** i want good dog** 我该怎么做?有没有办法添加多个 pos 之类的v(verb),n(noun)

python-3.x

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

用编码打开内存映射文件

内存映射文件是使用正则表达式或对大型二进制文件进行操作的有效方法。

如果我有一个大文本文件 (~1GB),是否可以使用编码感知映射文件?
正则表达式[\u1234-\u5678]bytes对象不起作用,将模式转换为 unicode 也不起作用("[\u1234-\u5678]".encode("utf-32") 例如无法正确理解范围)。
如果我将搜索模式从 转换strbytes使用,搜索可能会起作用.encode()但它仍然有些限制,应该有一种更简单的方法,而不是整天解码和编码。

我试过用io.TextIOWrapper里面包裹它io.BufferedRandom但无济于事:

AttributeError: 'mmap.mmap' object has no attribute 'seekable'
Run Code Online (Sandbox Code Playgroud)

创建包装器(使用继承)并设置方法seekablereadablewritable返回True也不起作用。

关于编码,一个固定长度的编码,如utf-32,代码点或较低的 BMPutf-16可能会假设(如果甚至可能仅指该部分)。

欢迎使用任何 python 版本的解决方案。

python encoding memory-mapped-files python-2.7 python-3.x

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

中断Queue.get

如何Queue.get()在Python 3.X中中断阻塞?

在Python 2.X 设置中,长时间的超时似乎有效,但对于Python 3.5来说也是如此.

在Windows 7,CPython 3.5.1,64位机器和Python上运行.看起来它在Ubuntu上的行为并不相同.

python python-3.x

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

Python:正确引用unicode字符串索引的方法

不确定这是不是问题,但我试图在unicode字符串的第一个字母上插入一个标签,似乎这不起作用.这可能是因为unicode索引的工作方式与常规字符串的工作方式不同吗?

现在我的代码是这样的:

for index, paragraph in enumerate(intro[2:-2]):
    intro[index] = bold_letters(paragraph, 1)

def bold_letters(string, index):
    return "<b>"+string[0]+"</b>"+string[index:]
Run Code Online (Sandbox Code Playgroud)

我得到这样的输出:

<b>?</b>??? ???? ?????? ????? ?????? ?????? ?? ??? ????? ??? ????? ??? ???????. 
Run Code Online (Sandbox Code Playgroud)

当我尝试插入HTML标记时,似乎unicode搞砸了.我试着弄乱插入位置,但没有取得任何进展.

示例所需输出(希伯来语从右到左):

>>>first_letter_bold("?????")
"????<\b>?<b>"
Run Code Online (Sandbox Code Playgroud)

顺便说一下,这是针对Python 2的

python unicode python-2.x

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

如何从列表中删除连续的重复项?

如何在python中删除这样的列表中的连续重复项?

lst = [1,2,2,4,4,4,4,1,3,3,3,5,5,5,5,5]
Run Code Online (Sandbox Code Playgroud)

拥有唯一的列表或集合无法解决问题,因为在上一个列表中存在一些重复值,如1,...,1.

我希望结果是这样的:

newlst = [1,2,4,1,3,5]
Run Code Online (Sandbox Code Playgroud)

如果我有这样的列表,我还要考虑这个案例 [4, 4, 4, 4, 2, 2, 3, 3, 3, 3, 3, 3] ,我希望结果[4,2,3,3] 不是[4,2,3].

python duplicates

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

类似字节的对象或缓冲区类型注释

如何注释类似字节的对象或缓冲区?

缓冲区协议没有接口,但我希望在我的函数中接受所有缓冲区。

我不介意它是否只是特定于 mypy 的。

python-3.x type-annotation mypy

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

PDB 不会在多线程代码中的断点处停止

我正在使用多线程代码,并且 PDB 不会在手动设置断点处停止:

(pdb) b filename:lineno
(pdb) c  # Runs without stopping
Run Code Online (Sandbox Code Playgroud)

可能是什么原因?

python debugging pdb

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

具有__set__但没有__get__的描述符如何工作?

我读的地方有关的事实,你可以有一个描述符有__set__和无__get__.

它是如何工作的?

它算作数据描述符吗?它是非数据描述符吗?

这是一个代码示例:

class Desc:
    def __init__(self, name):
        self.name = name
    def __set__(self, inst, value):
        inst.__dict__[self.name] = value
        print("set", self.name)

class Test:
    attr = Desc("attr")

>>>myinst = Test()
>>> myinst.attr = 1234
set attr
>>> myinst.attr
1234
>>> myinst.attr = 5678
set attr
>>> myinst.attr
5678
Run Code Online (Sandbox Code Playgroud)

python python-descriptors

4
推荐指数
1
解决办法
380
查看次数

函数在类vs实例上表现不同

我希望一个特定的函数可以作为类方法调用,并且当它在一个实例上调用时表现不同.

例如,如果我有一个class Thing,我想Thing.get_other_thing()工作,但也thing = Thing(); thing.get_other_thing()表现不同.

我认为覆盖get_other_thing初始化方法应该有效(见下文),但这看起来有点hacky.有没有更好的办法?

class Thing:

    def __init__(self):
        self.get_other_thing = self._get_other_thing_inst()

    @classmethod
    def get_other_thing(cls):
        # do something...

    def _get_other_thing_inst(self):
        # do something else
Run Code Online (Sandbox Code Playgroud)

python methods class function python-descriptors

4
推荐指数
1
解决办法
76
查看次数

如何编写信号安全的 Python 代码?

我将从一个“不应该”失败的示例代码开始:

counter1 = 0
counter2 = 0


def increment():
    global counter1, counter2
    counter1 += 1
    counter2 += 1


while True:
    try:
        increment()
    except:
        pass
    assert counter1 == counter2
Run Code Online (Sandbox Code Playgroud)

计数器代表一个内部结构,无论如何都应该保持其完整性。快速浏览一下,断言永远不会为 False,并且结构将完好无损。

然而,发生在函数中间的一个小信号(例如 Python 中的 SIGINT 或 KeyboardInterrupt)会导致内部结构中断。在实际场景中,它可能会导致内存损坏、死锁和所有其他类型的混乱。

有没有办法让这个函数信号安全?如果任意代码可以在任何地方运行并导致其出现故障,我们如何编写安全可靠的代码?

即使我们尝试使用 来保护它try...finally...,我们仍然可能在 处收到一个信号finally并阻止它运行。

虽然示例是在 Python 中,但我相信这个问题适用于所有编程语言。

编辑:

请记住,计数器只是一个例子。在我的实际用例中,它是不同的 Locks 和threading.Events。没有真正的方法(据我所知)使操作原子化。

python signals

4
推荐指数
1
解决办法
247
查看次数