小编Ama*_*nda的帖子

为什么python中没有定义"字典"和"键"?

我很擅长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- 我是否需要导入一个定义字典函数的库?如果是这样,哪个库?

python json

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

我可以在列表中显示每个列表项的位置而无需创建自己的计数器吗?

我试图解析与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]有很多额外的列.方便了解.我想知道的是......是否有一个内置变量可以在列表中报告我的位置.

python loops for-loop

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

为什么"getElementsByTagName"找不到任何东西?

这似乎应该是非常基本的,我无法弄清楚为什么它不起作用.到目前为止我有一个超级简单的页面,我想用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.我非常仔细地阅读了文档,我无法弄清楚我在这里做错了什么.

javascript

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

为什么 Atom 找不到这些换行符?

我正在尝试清理一堆.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)

那只是一个例子。还有其他一些,它们都围绕匹配多行字符串,这是我以前从未遇到过的问题,但在这种情况下,如果我使用项目搜索,它只是找不到字符串。

regex atom-editor

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

在python中按日期排序csv对象

我正在尝试读取和排序具有类似数据的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)

有人知道如何按日期排序吗?

python csv sorting

0
推荐指数
1
解决办法
6886
查看次数

我如何*排除*

我有一个包含很多日期的数据框(数据).我希望从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值的数据.

仍然想知道我将使用什么语法来排除一些数字向量而不是包含它.

r pattern-matching k

0
推荐指数
1
解决办法
168
查看次数

如何使用`sed`来改变bash脚本中的变量?

我正在尝试使用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脚本,我点从我.muttrcset 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)

bash sed

0
推荐指数
1
解决办法
2110
查看次数

标签 统计

python ×3

atom-editor ×1

bash ×1

csv ×1

for-loop ×1

javascript ×1

json ×1

k ×1

loops ×1

pattern-matching ×1

r ×1

regex ×1

sed ×1

sorting ×1