小编Gre*_*ind的帖子

Unicode(UTF-8)在Python中读取和写入文件

我在理解文本读取和写入文件时遇到了一些大脑失败(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 unicode io utf-8

305
推荐指数
10
解决办法
62万
查看次数

我如何运行Python程序?

所以我开始像Python一样,但我遇到麻烦...运行它.大声笑

我现在正在使用IDLE,但它没有任何用处,因为你一次只能运行几行.

我也使用Komodo Edit来创建实际的.py文件.

我的问题是,如何运行.py文件来测试实际的程序?

我正在使用Windows 7和Komodo Edit 5作为我的IDE.在Komodo按F5并没有做任何事情.

替代文字

python ide debugging

98
推荐指数
3
解决办法
71万
查看次数

我应该学习哪个Lisp?

我应该学习哪种Lisp(方言),为什么?

CL和Scheme之间的碎片减缓了吸收(至少对我而言!).

所以,请给我"真实答案"!

我试图阅读特征比较,他们似乎陷入了esoterica(我不完全理解),比如方言是否完全是尾递归等等.我希望你们(共同)能够明确区分不透明的差异.

我喜欢的事

良好的库支持,良好的环境和Unicode支持.

我不喜欢的事情

论战.功能在开始时很有用,但会干扰长期学习.


更新

  1. 我一直在使用MzScheme,一旦得到readline支持,我就会很享受.我没有在Unix上运行GUI,所以它对我来说似乎是一个很好的环境选择.

  2. 我也很高兴Clojure在debian上有一个易于安装的.deb软件包,所以它更容易玩.这是一个很大的胜利.尽管下面的一些相当容易激怒的敌意,低进入门槛是一个胜利.我喜欢被舀勺.

  3. 在阅读了更多SICP之后,我确实更了解尾递归的问题.

lisp scheme clojure

69
推荐指数
9
解决办法
2万
查看次数

解释R中的quantile()函数

我整天被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

math statistics r

66
推荐指数
2
解决办法
3万
查看次数

Python,如何解析字符串看起来像sys.argv

我想解析这样的字符串:

-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)

python parsing argv

40
推荐指数
1
解决办法
2万
查看次数

比较XML片段?

另一个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)

python xml diff

33
推荐指数
4
解决办法
2万
查看次数

确定序列是否在Python中的另一个序列中的最佳方法

这是"字符串包含子字符串"问题到(更多)任意类型的概括.

给定一个序列(例如列表或元组),确定另一个序列是否在其中的最佳方法是什么?作为奖励,它应该返回子序列开始的元素的索引:

用法示例(序列中的序列):

>>> 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)

到目前为止,我只是依靠蛮力,它似乎缓慢,丑陋,笨拙.

python algorithm sequence

25
推荐指数
4
解决办法
2万
查看次数

递归dircmp(比较两个目录以确保它们具有相同的文件和子目录)

从我观察到的filecmp.dircmp递归,但不满足我的需要,至少在py2.我想比较两个目录及其所有包含的文件.这是存在的,还是我需要构建(使用os.walk例如使用).我更喜欢预制,其他人已经完成了单元测试:)

实际的"比较"可以是草率的(例如,忽略权限),如果这有帮助的话.

我想要一些布尔值,并且report_full_closure是一份打印的报告.它也只是常见的子目录.AFIAC,如果左边或右边有任何东西,只有那些是不同的目标.我用它os.walk来构建它.

python recursion

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

git-svn重命名跟踪分支

我当前的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.我不需要更改远程端的任何名称.

git git-svn

22
推荐指数
1
解决办法
4743
查看次数

潜在的Dirichlet分配,陷阱,提示和程序

我正在尝试使用Latent Dirichlet Allocation主题消除歧义和分配,我正在寻找建议.

  1. 哪个程序是"最好的",最好的是最容易使用,最佳先验估计,快速的组合
  2. 我如何结合我对话题性的直觉.假设我想我知道语料库中的某些项目实际上属于同一类别,就像同一作者的所有文章一样.我可以将其添加到分析中吗?
  3. 在登船之前我应该​​知道任何意想不到的陷阱或提示?

我更喜欢任何程序都有R或Python前端,但我希望(并接受)我将与C打交道.

algorithm statistics nlp

21
推荐指数
3
解决办法
9380
查看次数

标签 统计

python ×6

algorithm ×2

statistics ×2

argv ×1

clojure ×1

debugging ×1

diff ×1

git ×1

git-svn ×1

ide ×1

io ×1

lisp ×1

math ×1

nlp ×1

parsing ×1

r ×1

recursion ×1

scheme ×1

sequence ×1

unicode ×1

utf-8 ×1

xml ×1