你怎么知道python是否已经用-i标志启动了?
根据文档,您可以检查os.environ中的PYTHONINSPECT变量,该变量相当于 -i.但显然它不会以同样的方式工作.
作品:
$ PYTHONINSPECT=1 python -c 'import os; print os.environ["PYTHONINSPECT"]'
Run Code Online (Sandbox Code Playgroud)
不起作用:
$ python -i -c 'import os; print os.environ["PYTHONINSPECT"]'
Run Code Online (Sandbox Code Playgroud)
我问的原因是因为我有一个脚本,如果某些条件失败,则调用sys.exit(-1).这很好,但有时我想使用-i手动调试它.我想我可以学习使用"PYTHONINSPECT = 1 python"而不是"python -i",但如果有一种通用的方法可以做到这一点会很好.
假设您要采用CMU的语音数据集输入,如下所示:
ABERRATION AE2 B ER0 EY1 SH AH0 N
ABERRATIONAL AE2 B ER0 EY1 SH AH0 N AH0 L
ABERRATIONS AE2 B ER0 EY1 SH AH0 N Z
ABERT AE1 B ER0 T
ABET AH0 B EH1 T
ABETTED AH0 B EH1 T IH0 D
ABETTING AH0 B EH1 T IH0 NG
ABEX EY1 B EH0 K S
ABEYANCE AH0 B EY1 AH0 N S
Run Code Online (Sandbox Code Playgroud)
(单词在左边,右边是一系列音素,在此处输入键)
您想将其用作机器学习系统的训练数据,该系统将使用新单词并猜测它们将如何用英语发音。
至少对我来说不是那么明显,因为没有固定大小的字母可以映射到音素。我觉得与马尔可夫链有关的事情可能是正确的方法。
你会怎么做?
如果我有声明:
h1 {
background-image: url(a.png), -webkit-linear-gradient(transparent, black), url(b.png);
}
Run Code Online (Sandbox Code Playgroud)
是否有可能只覆盖多个值的一部分,即(伪代码):
h1.foo {
background-image: default, default, url(c.png);
}
Run Code Online (Sandbox Code Playgroud) 您可以__slots__使用列表或元组(或任何可迭代的?)在新型python类中进行定义。创建实例后,该类型仍然存在。
鉴于元组总是比列表更有效率并且是不变的,是否有任何理由不希望使用元组__slots__呢?
>>> class foo(object):
... __slots__ = ('a',)
...
>>> class foo2(object):
... __slots__ = ['a']
...
>>> foo().__slots__
('a',)
>>> foo2().__slots__
['a']
Run Code Online (Sandbox Code Playgroud) 如何在不支持它的正则表达式引擎中按字边界分割?
python的重写可以匹配\ b但似乎不支持拆分它.我似乎记得处理具有相同限制的其他正则表达式引擎.
示例输入:
"hello, foo"
Run Code Online (Sandbox Code Playgroud)
预期产量:
['hello', ', ', 'foo']
Run Code Online (Sandbox Code Playgroud)
实际的python输出:
>>> re.compile(r'\b').split('hello, foo')
['hello, foo']
Run Code Online (Sandbox Code Playgroud) 如何为__version__导入小于或大于给定值的模块时如何引发异常?
有很多不同的方法可以做到,但我觉得必须有一些非常简单的方法让我目前无法理解.在这种情况下,版本号的格式为xxx
如何在MySQL中返回字符串减去字符串中的第一个字符?
换句话说,从'你好'得到'ello'.
我能想到的唯一方法是使用mid(),第二个偏移大于字符串可能是:
select mid('hello', 2, 99)
Run Code Online (Sandbox Code Playgroud)
但我确信必须有更优雅的方式来做到这一点.在那儿?
假设我有一个文件列表
file1
"file 1"
file2
Run Code Online (Sandbox Code Playgroud)
for ... in循环在空格之间划分它,而不是换行符:
for x in $( ls ); do
echo $x
done
Run Code Online (Sandbox Code Playgroud)
结果:
file
1
file1
file2
Run Code Online (Sandbox Code Playgroud)
我想在每个文件上执行命令.上面的"file"和"1"不是实际文件.如果文件名包含空格或逗号等内容,我该怎么办?
它比我想象的有点棘手-print0 | xargs -0可以处理,因为我实际上希望命令类似于"convert input/file1.jpg .... output/file1.jpg",所以我需要在进程中置换文件名.
我正在使用pyparsing来解析HTML.我正在抓取所有embed标签,但在某些情况下,有一个a标签直接跟随我也想抓住它是否可用.
例:
import pyparsing
target = pyparsing.makeHTMLTags("embed")[0]
target.setParseAction(pyparsing.withAttribute(src=pyparsing.withAttribute.ANY_VALUE))
target.ignore(pyparsing.htmlComment)
result = target.searchString(""".....
<object....><embed>.....</embed></object><br /><a href="blah">blah</a>
""")
Run Code Online (Sandbox Code Playgroud)
我无法在结果对象中找到任何字符偏移量,否则我只能抓取原始输入字符串的一部分并从那里开始工作.
编辑:
有人问为什么我不使用BeautifulSoup.这是一个很好的问题,让我告诉你为什么我选择不使用代码示例:
import BeautifulSoup
import urllib
import re
import socket
socket.setdefaulttimeout(3)
# get some random blogs
xml = urllib.urlopen('http://rpc.weblogs.com/shortChanges.xml').read()
success, failure = 0.0, 0.0
for url in re.compile(r'\burl="([^"]+)"').findall(xml)[:30]:
print url
try:
BeautifulSoup.BeautifulSoup(urllib.urlopen(url).read())
except IOError:
pass
except Exception, e:
print e
failure += 1
else:
success += 1
print failure / (failure + success)
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,BeautifulSoup失败了20-30%的解析错误.这些并非罕见的边缘情况.pyparsing是缓慢而繁琐的,但无论我扔什么,它都没有被炸毁.如果我能够更好地使用BeautifulSoup,那么我真的很想知道这一点.