我有一根绳子。我想对其应用词形还原。
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)?
内存映射文件是使用正则表达式或对大型二进制文件进行操作的有效方法。
如果我有一个大文本文件 (~1GB),是否可以使用编码感知映射文件?
正则表达式[\u1234-\u5678]对bytes对象不起作用,将模式转换为 unicode 也不起作用("[\u1234-\u5678]".encode("utf-32") 例如无法正确理解范围)。
如果我将搜索模式从 转换str为bytes使用,搜索可能会起作用.encode()但它仍然有些限制,应该有一种更简单的方法,而不是整天解码和编码。
我试过用io.TextIOWrapper里面包裹它io.BufferedRandom但无济于事:
AttributeError: 'mmap.mmap' object has no attribute 'seekable'
Run Code Online (Sandbox Code Playgroud)
创建包装器(使用继承)并设置方法seekable,readable并writable返回True也不起作用。
关于编码,一个固定长度的编码,如utf-32,代码点或较低的 BMPutf-16可能会假设(如果甚至可能仅指该部分)。
欢迎使用任何 python 版本的解决方案。
如何Queue.get()在Python 3.X中中断阻塞?
在Python 2.X 设置中,长时间的超时似乎有效,但对于Python 3.5来说也是如此.
在Windows 7,CPython 3.5.1,64位机器和Python上运行.看起来它在Ubuntu上的行为并不相同.
不确定这是不是问题,但我试图在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中删除这样的列表中的连续重复项?
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].
我正在使用多线程代码,并且 PDB 不会在手动设置断点处停止:
(pdb) b filename:lineno
(pdb) c # Runs without stopping
Run Code Online (Sandbox Code Playgroud)
可能是什么原因?
我读的地方有关的事实,你可以有一个描述符有__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) 我希望一个特定的函数可以作为类方法调用,并且当它在一个实例上调用时表现不同.
例如,如果我有一个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) 我将从一个“不应该”失败的示例代码开始:
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 ×8
python-3.x ×4
class ×1
debugging ×1
duplicates ×1
encoding ×1
function ×1
methods ×1
mypy ×1
pdb ×1
python-2.7 ×1
python-2.x ×1
signals ×1
unicode ×1