我正在玩BeautifulSoup 4,我有这个HTML代码:
</tr>
<tr>
<td id="freistoesse">Giraffe</td>
<td>14</td>
<td>7</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
我想匹配<td>标签之间的两个值,所以这里是14和7.
我试过这个:
giraffe = soup.find(text='Giraffe').findNext('td').text
Run Code Online (Sandbox Code Playgroud)
但这只是匹配14.如何使用此功能匹配这两个值?
我已经熟悉了这个概念,最值得注意的是观看了Raymond Hettinger的精彩视频并阅读了这里接受的答案,我想知道我的错误.
class ReadHTML(object):
def __init__(self, url):
page = urlopen(url).read()
self.page = page
@classmethod
def from_file(cls, path):
page = open(path).read()
return cls(page)
Run Code Online (Sandbox Code Playgroud)
这有效
r = ReadHTML('http://example.com')
print r.page
Run Code Online (Sandbox Code Playgroud)
而事实并非如此
r = ReadHTML.from_file('example.html')
print r.page
Run Code Online (Sandbox Code Playgroud)
它抛出一个错误,好像我试图"urlopen"文件:
File "/usr/lib/python2.7/urllib2.py", line 258, in get_type
raise ValueError, "unknown url type: %s" % self.__original
ValueError: unknown url type: <!doctype html>
Run Code Online (Sandbox Code Playgroud)
你能看出什么是错的吗?
我在python2.7中有一个小脚本,我想将其转换为Windows可执行文件.我用pyinstaller它.
剧本:
import sys
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
def get_inputs():
coor = raw_input(">>>top x left: ").replace(" ", "")
top, left = coor.split("x")
top = int(top.strip())
left = int(left.strip())
return top, left
def plot_location(top, left):
img= mpimg.imread('nbahalfcourt.jpg')
plt.imshow(img)
plt.scatter(left, top)
plt.grid()
plt.show()
def main():
top, left = get_inputs()
plot_location(top, left)
if __name__ == '__main__':
print "Input top x left coordinates (no space) eg: 44x232"
run = True
while run:
main()
Run Code Online (Sandbox Code Playgroud)
基本上,脚本只是在网格上绘制一个点.
转换过程成功完成.当我运行.exe但是我已经得到了ImportError(见下文),即使我没有任何参考Tkinter …
我最近一直在问这个问题,并且感觉不太需要这么多的帮助,但这个算法看起来很难.
我有一个像这样的元组列表:
[('12 Mar 2011',), ('152', 'Farko', 'Kier'), ('153', 'Park', 'Pub'), ('09 Mar 2011',), ('158', 'Diving', 'Jogging')]
Run Code Online (Sandbox Code Playgroud)
具有日期的元组将始终具有len == 1.现在,我需要将所有以下非日期元组加入每个前一个日期.非日期元组的数量将始终未定义.日期元组将连接序列中的每个非日期元组,直到它接近下一个日期元组,然后该元组必须加入以下所有非日期元组,依此类推.最终结果应该是这样的:
[('152', 'Farko', 'Kier', '12 Mar 2011'), ('153', 'Park', 'Pub', '12 Mar 2011'), ('158', 'Diving', 'Jogging', '09 Mar 2011',]
Run Code Online (Sandbox Code Playgroud)
如果你不能提供一个准备好的代码,也许有一些提示在哪里查看,是什么方法,因为我无法想到我的工具包中可以做得很好的任何事情.
这是一个应用程序特定的问题:django-filter,这里是对没有使用它的人的简要说明.
f = ProductFilter(request.GET, queryset=Product.objects.all())
Run Code Online (Sandbox Code Playgroud)
这条线为我们完成了所有过滤.ProductFilter是一个类,我们已经指定了过滤器(类似于表单的类).f是一个过滤器对象(基本上是我们要求的项目),其行为类似于列表.
现在,我想在这个对象上执行aggregate函数(Avg例如)f.您是否有任何想法如何实现?
我有这个清单:
[('', '', '654', 'Tom', '- Jerry', '', '', ''),
('', '', '', '', '', '756', 'X-Man -', 'Batman'),
('453', 'Hulk - Superman', '', '', '', '', '', '')]
Run Code Online (Sandbox Code Playgroud)
如何删除不需要的(主要是外部)字符,使其保持如下:
[('654', 'Tom' , '- Jerry'),
('756', 'X-man' -', Batman'),
('435','Hulk - Superman')]
Run Code Online (Sandbox Code Playgroud)
它是一个元组,所以我想我不能使用这个.strip()方法
谢谢.
我读了与我的问题相关的其他线程,但它没有解决问题.
<h2 class="tabellen_ueberschrift al">Cards</h2>
<div class="fl" style="width:49%;">
<table class="tabelle_grafik lh" cellpadding="2" cellspacing="1">
<tr>
<th class="al" colspan="3">CA Osasuna</th>
</tr>
<td class="s10 al">
<a href="/en/sisi/profil/spieler_51713.html" class="fb s10" title="Sisi">Sisi</a>
<br />
26. min. 2. yellow card, Time wasting </td>
</tr>
Run Code Online (Sandbox Code Playgroud)
我想得到表中的所有a标签(会有几个)所以我的代码是这样的:
header = soup.find('h2', text="Cards")
cards_table = header.find_next_siblings(limit=2)
for row in cards_table.find_all('a'):
print row
Run Code Online (Sandbox Code Playgroud)
这引起了我的兴趣
AttributeError: 'ResultSet' object has no attribute 'find_all'
Run Code Online (Sandbox Code Playgroud)
cards_table是一个表,我用循环迭代它,for所以不知道为什么这会导致错误.想法好吗?
我正在编写一个程序来计算作为输入给出的文件中的所有行,单词和字符.
import string
def main():
print "Program determines the number of lines, words and chars in a file."
file_name = raw_input("What is the file name to analyze? ")
in_file = open(file_name, 'r')
data = in_file.read()
words = string.split(data)
chars = 0
lines = 0
for i in words:
chars = chars + len(i)
print chars, len(words)
main()
Run Code Online (Sandbox Code Playgroud)
在某种程度上,代码是可以的.
但我不知道如何计算文件中的"空格".我的角色计数器只计算字母,空格被排除在外.
另外,我在计算线条时画了一个空白.
我有一个元组列表:
lst = [('54', '1.74', '253.2'), ('342', '2.85', '13.46'), ('53','2.43', '15.63')]
Run Code Online (Sandbox Code Playgroud)
我想在[1]最接近2.0的位置找到带有项目的元组
我是这样的:
number = lst[0][1]
for i in lst:
if abs(float(i[1]) - 2) < float(number):
number = i[1]
if number in i:
print i
Run Code Online (Sandbox Code Playgroud)
但是当我试图将字符串转换为float时会引发异常; /我怎么能真正做到这一点?
鉴于这个凌乱的字符串:
66,"Hi":"11.00","sth":"187,"Hi":"13.00"[5]"53","target":{"sth2"
Run Code Online (Sandbox Code Playgroud)
我想匹配13.00和 sth2(我需要忽略它的Hi值11.00).
我的正则表达式"Hi":"(.{0,5})".+"target":{"(.*)"不能这样做,因为它匹配最左边的值Hi,这里:11.00
我正在寻找一种解决方案,它不允许Hi在Hi它自己和这个词之间存在单词target.
python ×9
python-2.7 ×8
aggregate ×1
batch-file ×1
class ×1
class-method ×1
count ×1
django ×1
filter ×1
findall ×1
pyinstaller ×1
regex ×1
strip ×1
tuples ×1
words ×1