小编kir*_*gin的帖子

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

提取浮点/双精度值

如何使用正则表达式从字符串中提取double值.

import re

pattr = re.compile(???)    
x = pattr.match("4.5")      
Run Code Online (Sandbox Code Playgroud)

python regex

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

方括号的"严格性"

我把这些定义放在一个文件中:

x = 'a' : 'b' : 'c' : []
y = ['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)

(重要的是在文件中定义那些,而不是在GHCi中,因为在后一种情况下,事情变得更加奇怪,但这是另一个问题.)

现在,我在GHCi中加载此文件并:

?> :sprint x
x = _
?> :sprint y
y = _
?> seq x ()
()
?> seq y ()
()
?> :sprint x
x = 'a' : _
?> :sprint y
y = "abc"
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?我理解在这种情况下会发生什么x,这正是我的预期.但那怎么样y

我所看到的似乎与报告的第3.7节相矛盾,后者说:

翻译:以下标识成立:

[e1, …, ek] = e1 : (e2 : ( … (ek : [])))
Run Code Online (Sandbox Code Playgroud)

此外:

y = [toUpper …
Run Code Online (Sandbox Code Playgroud)

haskell ghc ghci

15
推荐指数
1
解决办法
173
查看次数

在F#中表达存在类型

据我所知,F#对存在类型没有任何支持.所以,我正在寻找另一种表达我的想法的方式.

我有一个数据结构,其内容可以用许多不同的方式解释.在这个特定的例子中,我认为它可以被视为一个int或一个真实的:

type Packed = (* something sensible *) unit

type PackedType = | PackedInt
                  | PackedReal


let undefined<'a> : 'a = failwith "undefined"

let unpackInt : Packed -> int = undefined
let unpackReal : Packed -> real = undefined

let packInt : int -> Packed = undefined
let packReal : real -> Packed = undefined
Run Code Online (Sandbox Code Playgroud)

哪里real有意义,说:

type real = int * int

let addReal : real -> real -> real = undefined
Run Code Online (Sandbox Code Playgroud)

现在,我需要一个功能addPacked : PackedType -> …

f# types

10
推荐指数
1
解决办法
1079
查看次数

使用python解析JSON:空白字段

我在使用python解析JSON时遇到了问题,现在我被卡住了.
问题是我的JSON实体并不总是一样的.JSON是这样的:

"entries":[
{
"summary": "here is the sunnary",
"extensions": {
   "coordinates":"coords",
   "address":"address",
   "name":"name"
   "telephone":"123123"
   "url":"www.blablablah"
},
}
]
Run Code Online (Sandbox Code Playgroud)

我可以通过JSON,例如:

for entrie in entries:
  name =entrie['extensions']['name']
  tel=entrie['extensions']['telephone']
Run Code Online (Sandbox Code Playgroud)

问题来了,因为有时,JSON没有所有"字段",例如,telephone字段,有时会丢失,因此,脚本失败KeyError,因为此条目中缺少关键电话.
所以,我的问题是:我怎么能运行这个脚本,留下一个缺少电话的空白区域?我尝试过:

if entrie['extensions']['telephone']:
    tel=entrie['extensions']['telephone']
Run Code Online (Sandbox Code Playgroud)

但我认为不行.

python parsing json python-2.7

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

如何在python中从布尔数组转换为int数组

我有一个Numpy二维数组,其中一列有布尔值,即True/ False.我想分别将它转换为整数1,0我该怎么办呢?

data[0::,2]是布尔,我试过

data[0::,2]=int(data[0::,2])
Run Code Online (Sandbox Code Playgroud)

,但它给了我错误:

TypeError: only length-1 arrays can be converted to Python scalars

我的前5行数组是:

[['0', '3', 'True', '22', '1', '0', '7.25', '0'],
 ['1', '1', 'False', '38', '1', '0', '71.2833', '1'],
 ['1', '3', 'False', '26', '0', '0', '7.925', '0'],
 ['1', '1', 'False', '35', '1', '0', '53.1', '0'],
 ['0', '3', 'True', '35', '0', '0', '8.05', '0']]
Run Code Online (Sandbox Code Playgroud)

python numpy

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

使用SSH密钥切换用户"sudo su - username"

我一直在尝试使用ssh密钥,以便能够通过使用在同一台Linux机器/服务器上从一个用户切换到另一个用户sudo su - username.

我想要做的是:我在一台服务器上有几个帐户.我想passwd -l username通过在同一台机器上从一个用户转到另一个用户来锁定这些帐户,并且只允许使用SSH密钥进行访问,例如: [user1@server]$ ssh user2@server

我这样做是通过将公钥复制user1authorized_keys文件中user2而且工作正常.

但是,我想也是这样做的另一件事,是要能够sudo su - user2user1通过使用SSH密钥,这样我就可以避开密码提示.

例如, [user1@server]$ sudo su - user2

我修改了sshd_config文件,并取消注释字段:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)

但我仍然无法做到这一点.

我也试过我在互联网上发现的有关代理转发的内容,但没有.

谁能帮助我如何做到这一点或指向正确的方向?

linux ssh ssh-keys

8
推荐指数
1
解决办法
6万
查看次数

如何在没有类的情况下归纳证明类型相等?

我试图以这样一种方式证明类型级列表的关联性,这种方式将允许我在等效类型之间进行转换而无需携带任何约束。

假设串联的标准定义:

type family (++) (xs :: [k]) (ys :: [k]) :: [k] where
  '[] ++ ys = ys
  (x ': xs) ++ ys = x ': (xs ++ ys)
Run Code Online (Sandbox Code Playgroud)

假设,我得到了一个函数:

given :: forall k (a :: [k]) (b :: [k]) (c :: [k]). Proxy ((a ++ b) ++ c)
given = Proxy  -- Proxy is just an example
Run Code Online (Sandbox Code Playgroud)

我想调用这个函数,然后使用关联性:

my :: forall k (a :: [k]) (b :: [k]) (c :: [k]). Proxy (a ++ (b ++ c))
my …
Run Code Online (Sandbox Code Playgroud)

haskell types

8
推荐指数
1
解决办法
142
查看次数

Python 错误:5.7.0 必须先发出 starttls 命令

我尝试使用 python 脚本发送电子邮件,但收到错误消息:

5.7.0 must issue a starttls command first
Run Code Online (Sandbox Code Playgroud)

我正在使用smtplib,这是我的代码:

import smtplib

sender = 'from@fromdomain.com'
receivers = 'to@todomain.com'

message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
Subject: SMTP e-mail test

This is a test e-mail message.
"""

try:
    smtpObj = smtplib.SMTP('smtp.gmail.com')
    smtpObj.sendmail(sender, receivers, message)         
    print "Successfully sent email"
except Exception,e:
    print str(e)
Run Code Online (Sandbox Code Playgroud)

如果有人知道如何解决此错误,我将不胜感激。

python email smtplib

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

在fugitive.vim冲突差异中显示基础

默认情况下,如果你使用fugitive.vim:Gdiff上是与git的冲突文件缓冲区,你会得到一个三路DIFF显示HEAD,工作复印件(冲突标志),和merge.

我喜欢git config merge.conflictstyle diff3设置,包括基础(最近的共同祖先HEADmerge冲突标记.

不幸的是,即使diff3conflictstylein fugitive.vim中,你仍然只能获得3个窗格(没有基础).

有谁知道如何在另一个窗格中显示它?理想情况下是关于工作副本.

Tim Pope的评论似乎提供了一些线索,但我无法弄明白.

git vim git-merge vim-fugitive

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

标签 统计

python ×4

haskell ×2

types ×2

vim ×2

email ×1

f# ×1

ghc ×1

ghci ×1

git ×1

git-merge ×1

json ×1

linux ×1

numpy ×1

parsing ×1

python-2.7 ×1

regex ×1

smtplib ×1

ssh ×1

ssh-keys ×1

vim-fugitive ×1