我很擅长PHP并试图学习Python.所以请原谅我,如果我试图翻译函数太字面,但这就是我所拥有的:
import json
import urllib
url='http://www.example.com/sample.json'
f = urllib.urlopen(url)
data = json.loads(f.read())
for item in data:
for entry in item:
print dictionary.keys(entry)
Run Code Online (Sandbox Code Playgroud)
我知道item有类型字典,因为我做了print type(item).但是当我尝试运行上面的代码时,我得到NameError: name 'dictionary' is not defined- 我是否需要导入一个定义字典函数的库?如果是这样,哪个库?
我试图解析与BeautifulSoup一个表,并发现它是/将是有益的知道我在看什么行和列,因为我走过它.现在我有这个:
for table in soup.find_all("table", {"class":"foo"}):
r = 0
for row in table.find_all('tr'):
cells = row.find_all("td")
c = 0
for cell in cells:
print "row", r, "cell", c
print cell.attr
c += 1
r +=1
Run Code Online (Sandbox Code Playgroud)
这会抛出一些揭示信息:
row 0 cell 0
row 1 cell 0
row 1 cell 1
row 1 cell 2
row 1 cell 3
row 1 cell 4
row 2 cell 0
row 2 cell 1
row 3 cell 0
row 3 cell 1
Run Code Online (Sandbox Code Playgroud)
由于某种原因,row [1]有很多额外的列.方便了解.我想知道的是......是否有一个内置变量可以在列表中报告我的位置.
这似乎应该是非常基本的,我无法弄清楚为什么它不起作用.到目前为止我有一个超级简单的页面,我想用JS选择段落:
这是我的HTML:
<!DOCTYPE html>
<html>
<head>
<script src="misc.js" type="text/javascript"></script>
</head>
<body>
<p id="first">Just one paragraph.</p>
<p id="second">Two, actually.</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的JS:
var paras = document.getElementsByTagName('p');
console.log(paras.length);
Run Code Online (Sandbox Code Playgroud)
我希望控制台日志显示,2但我看到了0.我非常仔细地阅读了文档,我无法弄清楚我在这里做错了什么.
我正在尝试清理一堆.vcf包含换行符的文件,并且无法让 Atom 找到换行符。通常\r,如果选择了“regex” ,\n或者\r\n将起作用,但在这种情况下,它根本找不到空行。这是一个选择:
BEGIN:VCARD VERSION:3.0
X-UNKNOWN-ELEMENT;TYPE=objectclass:top
X-UNKNOWN-ELEMENT;TYPE=objectclass:person
X-UNKNOWN-ELEMENT;TYPE=objectclass:organizationalPerson
X-UNKNOWN-ELEMENT;TYPE=objectclass:inetOrgPerson
X-UNKNOWN-ELEMENT;TYPE=objectclass:mozillaAbPersonAlpha
Run Code Online (Sandbox Code Playgroud)
我阅读了这篇如何在 Atom 中替换换行符?但是那里的解决方案都没有帮助我找到空行。
我最终转向 bash 以摆脱空行:sed -i '/^$/d' *.vcf但是还有很多其他事情我想清理。像这样的东西:
X-UNKNOWN-ELEMENT;TYPE=E-mail 2 - Type:internet
X-UNKNOWN-ELEMENT;TYPE=E-mail 2 - Value:person@example.com
Run Code Online (Sandbox Code Playgroud)
应该变成:
EMAIL;TYPE=WORK:person@example.com
Run Code Online (Sandbox Code Playgroud)
那只是一个例子。还有其他一些,它们都围绕匹配多行字符串,这是我以前从未遇到过的问题,但在这种情况下,如果我使用项目搜索,它只是找不到字符串。
我正在尝试读取和排序具有类似数据的csv文件
Date Open High Low Close Volume
27-Mar-12 8.25 8.35 8.17 8.19 9801989
26-Mar-12 8.16 8.25 8.12 8.24 8694416
23-Mar-12 8.05 8.12 7.95 8.09 8149170
Run Code Online (Sandbox Code Playgroud)
我这样做
import csv
data = csv.reader(open('data.csv','r'))
Run Code Online (Sandbox Code Playgroud)
按日期排序数据.我做:
sorteddata = sorted(data,key=operator.itemgetter(1),reverse=False)
Run Code Online (Sandbox Code Playgroud)
问题是,它通过将日期读取为字符串而不是日期来对日期进行排序.所以数据是这样排序的,
['3-Aug-11', '7.06', '7.23', '6.84', '7.16', '31583617']
['3-Feb-12', '7.02', '7.12', '6.98', '7.08', '15318044']
['3-Jan-12', '5.53', '5.59', '5.44', '5.48', '12678923']
['3-Jun-11', '8.09', '8.17', '7.92', '7.97', '21273812']
['3-May-11', '9.00', '9.04', '8.63', '8.80', '17356005']
Run Code Online (Sandbox Code Playgroud)
有人知道如何按日期排序吗?
我有一个包含很多日期的数据框(数据).我希望从1970年之前删掉所有东西.我可以创建一个1970年以前的索引列表:
tmp <- which(data$data < '1970-01-01')
[1] 13446 102876 141199
Run Code Online (Sandbox Code Playgroud)
我想创建一个删除这三行的新表.就像是:
data.after.1970 <- data[!tmp, ]
Run Code Online (Sandbox Code Playgroud)
我知道我可以在 1970年之后创建一个所有事件的向量,并与之匹配:
tmp <- which(data$data > '1970-01-01')
data.after.1970 <- data[tmp, ]
Run Code Online (Sandbox Code Playgroud)
但我想知道我会用什么语法来排除项目.
UPDATE
我终于做到了这一点:
tmp <- which(data$data > as.Date('1970-01-01'))
data.after.1970 <- data[tmp, ]
Run Code Online (Sandbox Code Playgroud)
仔细看看它.which(data$data < as.Date('1970-01-01'))得到三个结果,但nrow(data) - nrow(data.after.1970)显示我丢了45行.summary(datae$date)清除了:
summary(data$date)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
"1933-07-01" "1989-01-25" "1992-07-09" "1992-05-03" "1996-06-10" "2006-09-14" "42"
Run Code Online (Sandbox Code Playgroud)
由于我的目标是获得第二个数据集,所以如果我排除那些日期不好的数据,我可以比较我的结果,我实际上也希望删除那些带有NA值的数据.
我仍然想知道我将使用什么语法来排除一些数字向量而不是包含它.
我正在尝试使用enscript从Mutt打印PDF,并遇到字符编码问题.围绕它们的一种方法似乎只是sed用来替换问题字符:sed -ir 's/[“”]/"/g' {input}
我的测试输入文件是这样的:
“very dirty”
we’re
Run Code Online (Sandbox Code Playgroud)
我希望得到"very dirty",we're但我仍然得到
â\200\234very dirtyâ\200\235
weâ\200\231re
Run Code Online (Sandbox Code Playgroud)
我发现了一个很好的关于从Mutt打印到PDF的小帖子,我用它作为起点.我有一个bash脚本,我点从我.muttrc用set print_command="$HOME/.mutt/print.sh"-剧本目前像这样读取有关:
#!/bin/bash
input="$1" pdir="$HOME/Desktop" open_pdf=evince
# Straighten out curly quotes
sed -ir 's/[“”]/"/g' $input
sed -ir "s/[’]/'/g" $input
tmpfile="`mktemp $pdir/mutt_XXXXXXXX.pdf`"
enscript --font=Courier8 $input -2r --word-wrap --fancy-header=mutt -p - 2>/dev/null | ps2pdf - $tmpfile
$open_pdf $tmpfile >/dev/null 2>&1 &
sleep 1
rm $tmpfile
Run Code Online (Sandbox Code Playgroud)
它在创建PDF方面做得很好(如果你把它作为参数给它一个文件也可以正常工作),但我无法弄清楚如何修复卷曲引号.
我尝试了一系列的变化sed:
input=sed -r 's/[“”]/"/g' $input
$input=sed …Run Code Online (Sandbox Code Playgroud)