我在理解文本读取和写入文件时遇到了一些大脑失败(Python 2.4).
# The string, which has an a-acute in it.
ss = u'Capit\xe1n'
ss8 = ss.encode('utf8')
repr(ss), repr(ss8)
Run Code Online (Sandbox Code Playgroud)
("u'Capit\xe1n'","'Capit\xc3\xa1n'")
print ss, ss8
print >> open('f1','w'), ss8
>>> file('f1').read()
'Capit\xc3\xa1n\n'
Run Code Online (Sandbox Code Playgroud)
所以我输入Capit\xc3\xa1n我最喜欢的编辑器,在文件f2中.
然后:
>>> open('f1').read()
'Capit\xc3\xa1n\n'
>>> open('f2').read()
'Capit\\xc3\\xa1n\n'
>>> open('f1').read().decode('utf8')
u'Capit\xe1n\n'
>>> open('f2').read().decode('utf8')
u'Capit\\xc3\\xa1n\n'
Run Code Online (Sandbox Code Playgroud)
我在这里不理解什么?显然,我缺少一些重要的魔法(或者很有道理).在文本文件中键入什么来获得正确的转换?
我真正没有想到的是,UTF-8表示的重点是,如果你真的不能让Python识别它,那么它来自外部.也许我应该只是JSON转储字符串,并使用它,因为它有一个asciiable表示!更重要的是,当从文件进入时,Python会识别和解码这个Unicode对象的ASCII表示吗?如果是这样,我怎么得到它?
>>> print simplejson.dumps(ss)
'"Capit\u00e1n"'
>>> print >> file('f3','w'), simplejson.dumps(ss)
>>> simplejson.load(open('f3'))
u'Capit\xe1n'
Run Code Online (Sandbox Code Playgroud) 所以我开始像Python一样,但我遇到麻烦...运行它.大声笑
我现在正在使用IDLE,但它没有任何用处,因为你一次只能运行几行.
我也使用Komodo Edit来创建实际的.py文件.
我的问题是,如何运行.py文件来测试实际的程序?
我正在使用Windows 7和Komodo Edit 5作为我的IDE.在Komodo按F5并没有做任何事情.

CL和Scheme之间的碎片减缓了吸收(至少对我而言!).
所以,请给我"真实答案"!
我试图阅读特征比较,他们似乎陷入了esoterica(我不完全理解),比如方言是否完全是尾递归等等.我希望你们(共同)能够明确区分不透明的差异.
良好的库支持,良好的环境和Unicode支持.
论战.功能在开始时很有用,但会干扰长期学习.
我一直在使用MzScheme,一旦得到readline支持,我就会很享受.我没有在Unix上运行GUI,所以它对我来说似乎是一个很好的环境选择.
我也很高兴Clojure在debian上有一个易于安装的.deb软件包,所以它更容易玩.这是一个很大的胜利.尽管下面的一些相当容易激怒的敌意,低进入门槛是一个胜利.我喜欢被舀勺.
在阅读了更多SICP之后,我确实更了解尾递归的问题.
我整天被R分位数函数迷惑了.
我有一个关于分位数如何工作的直观概念,以及统计数据中的MS,但男孩哦,男孩,它的文档让我很困惑.
来自文档:
Q [i](p)=(1 - gamma)x [j] + gamma x [j + 1],
我到目前为止还在用它.对于类型i分位数,它是x [j]和x [j + 1]之间的插值,基于一些神秘的常数伽玛
其中1 <= i <= 9,(jm)/ n <= p <(j-m + 1)/ n,x [j]是第j阶统计量,n是样本大小,m是常数确定的通过样本分位数类型.这里γ取决于g = np + mj的小数部分.
那么,如何计算j?M&
对于连续样本分位数类型(4到9),样本分位数可以通过第k阶统计量和p(k)之间的线性插值获得:
p(k)=(k-alpha)/(n-alpha-beta + 1),其中α和β是由类型确定的常数.此外,m =α+ p(1-α-β),γ= g.
现在我真的迷路了.p,之前是一个常数,现在显然是一个函数.
所以对于Type 7分位数,默认...
输入7
p(k)=(k-1)/(n-1).在这种情况下,p(k)=模式[F(x [k])].这是由S.使用的.
有人想帮帮我吗?特别是我对P的是一个功能和常数,究竟发生了什么符号糊涂米是,现在来计算j表示一些特殊的p.
我希望根据这里的答案,我们可以提交一些修改后的文档,更好地解释这里发生了什么.
quantile.R源代码 或类型:quantile.default
我想解析这样的字符串:
-o 1 --long "Some long string"
Run Code Online (Sandbox Code Playgroud)
进入这个:
["-o", "1", "--long", 'Some long string']
Run Code Online (Sandbox Code Playgroud)
或类似的.
这与getopt或optparse不同,后者以sys.argv解析的输入开头(就像我上面的输出一样).有没有标准的方法来做到这一点?基本上,这是"分裂",同时保持引用的字符串在一起.
到目前为止我的最佳功能:
import csv
def split_quote(string,quotechar='"'):
'''
>>> split_quote('--blah "Some argument" here')
['--blah', 'Some argument', 'here']
>>> split_quote("--blah 'Some argument' here", quotechar="'")
['--blah', 'Some argument', 'here']
'''
s = csv.StringIO(string)
C = csv.reader(s, delimiter=" ",quotechar=quotechar)
return list(C)[0]
Run Code Online (Sandbox Code Playgroud) 在另一个SO问题的基础上,如何检查两个结构良好的XML片段在语义上是否相等.我需要的只是"平等"与否,因为我正在使用它进行单元测试.
在我想要的系统中,这些是相同的(注意'start'和'end'的顺序):
<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<Stats start="1275955200" end="1276041599">
</Stats>
# Reordered start and end
<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<Stats end="1276041599" start="1275955200" >
</Stats>
Run Code Online (Sandbox Code Playgroud)
我有lmxl和其他工具供我使用,一个只允许重新排序属性的简单功能也可以正常工作!
基于IanB答案的工作片段:
from formencode.doctest_xml_compare import xml_compare
# have to strip these or fromstring carps
xml1 = """ <?xml version='1.0' encoding='utf-8' standalone='yes'?>
<Stats start="1275955200" end="1276041599"></Stats>"""
xml2 = """ <?xml version='1.0' encoding='utf-8' standalone='yes'?>
<Stats end="1276041599" start="1275955200"></Stats>"""
xml3 = """ <?xml version='1.0' encoding='utf-8' standalone='yes'?>
<Stats start="1275955200"></Stats>"""
from lxml import etree
tree1 = etree.fromstring(xml1.strip())
tree2 = etree.fromstring(xml2.strip())
tree3 …Run Code Online (Sandbox Code Playgroud) 这是"字符串包含子字符串"问题到(更多)任意类型的概括.
给定一个序列(例如列表或元组),确定另一个序列是否在其中的最佳方法是什么?作为奖励,它应该返回子序列开始的元素的索引:
用法示例(序列中的序列):
>>> seq_in_seq([5,6], [4,'a',3,5,6])
3
>>> seq_in_seq([5,7], [4,'a',3,5,6])
-1 # or None, or whatever
Run Code Online (Sandbox Code Playgroud)
到目前为止,我只是依靠蛮力,它似乎缓慢,丑陋,笨拙.
从我观察到的filecmp.dircmp是递归,但不满足我的需要,至少在py2.我想比较两个目录及其所有包含的文件.这是存在的,还是我需要构建(使用os.walk例如使用).我更喜欢预制,其他人已经完成了单元测试:)
实际的"比较"可以是草率的(例如,忽略权限),如果这有帮助的话.
我想要一些布尔值,并且report_full_closure是一份打印的报告.它也只是常见的子目录.AFIAC,如果左边或右边有任何东西,只有那些是不同的目标.我用它os.walk来构建它.
我当前的svn克隆分支(使用-s'标准布局')选项被调用:
$ git branch -r
branch1
branch2
Run Code Online (Sandbox Code Playgroud)
我想重命名那些,以便它们是:
$ git branch -r
svn/branch1
svn/branch2
Run Code Online (Sandbox Code Playgroud)
好像我最初调用了$ git-svn clone --prefix svn.我不需要更改远程端的任何名称.
我正在尝试使用Latent Dirichlet Allocation主题消除歧义和分配,我正在寻找建议.
我更喜欢任何程序都有R或Python前端,但我希望(并接受)我将与C打交道.