我正在使用Python 3.2.3并希望更改默认返回的字符串值:
from collections import defaultdict
d=defaultdict(str)
d["NonExistent"]
Run Code Online (Sandbox Code Playgroud)
返回的值是''.如何更改此设置,以便在找不到密钥时"unknown"返回而不是空字符串?
我有一个R data.frame包含经度,纬度跨越整个美国地图.当X个条目都在经度为几度且纬度为几度的小地理区域内时,我希望能够检测到这一点,然后让我的程序返回地理边界框的坐标.是否有Python或R CRAN包已经这样做了?如果没有,我将如何确定这些信息?
我正在寻找一个更优雅的解决方案来格式化MAC地址与冒号.我使用的是Python 3.2.也许是一种奇特的清单理解?
s=""
h="00233a990c21"
for i in range(0,12,2):
s += h[i:i+2] + ":"
s=s[:-1]
print("s=",s)
Run Code Online (Sandbox Code Playgroud) 我编译了SQLite3 3.8.6并将其安装到$ {HOME}/opt:
LDFLAGS="-L${HOME}/opt/lib" CFLAGS="-L${HOME}/opt/include" ./configure --prefix=$HOME/opt
make && make install
Run Code Online (Sandbox Code Playgroud)
我现在正在尝试编译Python 3.4.2以使用此版本而不是为整个系统安装的版本.我在这个系统上没有root访问权限.要编译Python,我正在使用:
LDFLAGS="-L${HOME}/opt/lib" CFLAGS="-L${HOME}/opt/include" ./configure --prefix=$HOME/opt
make && make install
Run Code Online (Sandbox Code Playgroud)
如果是SQLite3,我能用我的新版本编译Python 3.3.5,但这些相同的步骤似乎对我来说不适用于3.4.2.
如何编译Python 3.4.2以包含我的版本的SQLite 3.8.6,它位于$ {HOME}/opt?
谢谢.
编辑:它编译和安装好,除了使用较旧的系统版本的sqlite3而不是我自己编译和安装的版本的事实.
我有一张美国地图和一张我要绘制的长,拉的列表.一旦我开始工作,我也想切换到"世界"地图.生成地图,但地图上不显示任何点.TSV文件的第一行包含此标头:
LONG{tab}LATR似乎正在"流量"表中读取确定.我究竟做错了什么?
library("maps")
traffic = read.table("C:/temp/traffic_10.40.tsv", header=T, sep="\t")
png(filename="C:/temp/usa.png", width=850, height=600, bg="white")
map('state', plot = TRUE, fill = FALSE, col = palette())
title("Destinations")
points(x=traffic$LONG,y=traffic$LAT,col='red',cex=0.75)
dev.off()
编辑
> dput(traffic) structure(list(LONG = c(47.6218, 32.7942, 34.1121, 40.0068, 47.6218, 33.9553, 33.7629, 40.0068, 39.05, 38.1075, 33.7629, 32.769, 37.3857, 29.4576, 34.1674, 38.8147, 32.7942, 31.1429, 40.3254, 30.3059, 38.2248, 47.6218, 33.9553, 38.1075, 27.1943, 29.4576, 30.5175, 38.5668, 42.6657, 40.2982, 32.7539, 40.6698, 47.6742, 32.7942, 47.6218, 35.8219), LAT = c(-122.35, -96.7653, -118.411, -75.1347, -122.35, -83.3937, -84.4226, -75.1347, -77.4833, -122.264, -84.4226, -96.5998, …
R新手在这里.
如果我第一次使用map('state'),我怎么能使用map('county', ylim=..., xlim=...)但是偏移它像这样:

现在,我正在使用imagemagick composite -gravity southwest ...来组合2个PNG文件,但这似乎不太理想.
import urllib.request
url="http://espn.com"
f = urllib.request.urlopen(url)
contents = f.read().decode('latin-1')
q = f.geturl()
print(q)
Run Code Online (Sandbox Code Playgroud)
此代码将返回http://espn.go.com/,这是我想要的 - 重定向网站URL.看完Python文档,谷歌搜索等,我无法弄清楚如何:
我怎么能在Python 3中做到这一点?如果有一个更好的模块urllib,我很好.
我在SO上研究了其他类似的问题,但似乎无法使我的数据工作.
我的目标是这个结果:

这是我的数据框:
Room Direc MB
Alley-10 Rx 1
Alley-11 Rx 7
Alley-12 Rx 11
Alley-10 Tx 23
Alley-11 Tx 17
Alley-12 Tx 20
当我跑:
ggplot(tp, aes(x=Room,y=MB)) + geom_area(aes(fill=factor(Direc)))
Run Code Online (Sandbox Code Playgroud)
我得到这个结果:

我怎样才能使这个工作?
考虑一个拥有 50 多个账户的 AWS 组织。每个账户都创建了一个角色,允许对 EC2 服务进行只读访问(名为“EC2ReadAccess”),并与主(/管理)账户建立信任关系。主账户中的单个 IAM 用户应用了一个策略,允许其在每个账户中担任该角色。
我希望能够使用唯一的 IAM 用户迭代所有帐户,以便检索所有 EC2 实例。我知道同时对所有帐户运行 CLI 命令是不可能的。撇开循环遍历每个账户中的区域不谈,这已经被广泛讨论了,是否有一个优雅的解决方案来做到这一点?
我想到的一个技巧是以编程方式构建文件credentials,以便它包含每个帐户的配置文件。每个配置文件依次“链接”到 IAM 用户的配置文件(如此处所述),并为每个条目更新角色内的账户 ID。下面是一个例子:
[user1]
aws_access_key_id=<key_id>
aws_secret_access_key=<secret_key>
[marketing]
role_arn = arn:aws:iam::123456789012:role/EC2ReadAccess
source_profile = user1
[dev]
role_arn = arn:aws:iam::234567890123:role/EC2ReadAccess
source_profile = user1
...
[prod]
role_arn = arn:aws:iam::345678901234:role/EC2ReadAccess
source_profile = user1
Run Code Online (Sandbox Code Playgroud)
运行 CLI 命令(在本例中aws ec2 describe-instances)可以附带--profile参数,以便循环显示credentials文件中存在的所有配置文件。该区域可以在另一个循环中循环。因此,预先以编程方式生成的要发出的命令列表可能类似于:
aws ec2 describe-instances --profile marketing --region us-east-1
aws ec2 describe-instances --profile marketing --region us-east-2
... …Run Code Online (Sandbox Code Playgroud) 我有一个SonicWall syslog文件,格式如下:
<134>id=firewall sn=C0EAE470F7D0 time="2014-08-13 04:31:27" fw=10.2.3.4 pri=6 c=1024 m=537 msg="Connection Closed" n=301541 src=172.16.1.43:50581:X0 dst=172.16.1.1:192:X0 proto=udp/192 sent=46
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个正则表达式,它将返回在=符号上拆分的元组列表.如果值包含空格,则它将具有双引号.我不关心返回的值是否返回引号,只要返回带有空格的整个值.例如,我希望时间键包含日期和时间.期望的输出:
("<134>id","firewall"), ("sn","C0EAE470F7D0"), ("time", '"2014-08-13 04:31:27"')
("fw","1.2.3.4"), ("pri","6"), ... ("msg", '"Connection Closed"'), ("n", "301541")
("src","172.16.1.43:50581:X0"), ... ("sent", "46")
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所遇到的,但遇到带双引号的字段时失败.此外,不返回在这种情况下"发送"的最后一个字段.我已经尝试了RE几个小时尝试各种组合,但只是不能让它工作.任何帮助将不胜感激.
import re
fname = "syslog.log"
with open(fname) as fp: lines = fp.read().splitlines()
q = re.compile('(.*?)=(.*?)[\s"]',re.S|re.M)
for line in lines:
print(line)
key_val = q.findall(line)
print(key_val)
Run Code Online (Sandbox Code Playgroud)
这是此代码返回的内容:
[('<134>id', 'firewall'), ('sn', 'C0EAE470F7D0'), ('time', ''),
('2014-08-13 04:31:27" fw', '10.2.3.4'), ('pri', '6'),
('c', '1024'), ('m', '537'), ('msg', ''),
('Connection …Run Code Online (Sandbox Code Playgroud) 如果我有这些数据:
a = [['a', 'b', 'b', 'v', 'd'],
['d', 'f', 'g'], ['q', 'w', 'e', 'r', 't', 'y'],
['x', '123', 'v', 'b'], ['g', 'h', 'i']]
Run Code Online (Sandbox Code Playgroud)
我想运行一个函数(最好是单行),它将返回列表列表中123具有最长字符串长度的函数.我怎样才能做到这一点?
我唯一看到的是在列表列表中找到最长的列表,所以这是一个稍微不同的问题.
python ×7
r ×4
maps ×2
python-3.x ×2
amazon-ec2 ×1
collections ×1
cran ×1
geolocation ×1
ggplot2 ×1
lambda ×1
regex ×1
sqlite ×1
urllib ×1