小编msw*_*msw的帖子

当修复破碎的标记时,BeautifulSoup丢弃文本

我对Python很陌生,但是到底是什么......这是一个奇怪的问题所以我会尽我所能尽力解释它:

我正忙着用Python编写一个脚本来检查一个网页是否有特定的变化(基本上从0翻到1的数字).当发生更改时,脚本将继续执行其他操作.不幸的是,我还没有达到这一点,因为我甚至在解析HTML时遇到了麻烦,因为BeautifulSoup抓住它时很多HTML都丢失了!(至少,这是我声称的.)

让我们一步一步:我正在使用BeautifulSoupMechanize为此而努力.首先,我在网页上找到一个表单并选择它,根据需要更改表单中的控件.(我已经验证了所有控件都按照我的预期更改.)之后,我提交表单,然后调用我编写的辅助函数调用process_results():

...
form = list(client.forms())[1]
client.select_form('ttform');
...
# Modify controls
...
client.submit()
process_results(client)
Run Code Online (Sandbox Code Playgroud)

process_results()只是检查客户回来了什么.首先,根据放入表单的内容,您可以获得无效的搜索结果,因此我想搜索网页上显示的错误消息,看看它是否存在.我BeautifulSoup用来做这个:

# Processes search results.
def process_serach_results(cli):

    html = cli.response().read()
    soup = BeautifulSoup(html)
    ...
Run Code Online (Sandbox Code Playgroud)

评估有问题的代码是否出现在页面上的语句如下所示:

...
if (soup.find('td', attr = {'class' : 'msgarea'}) != None):
    # Do something...
    ...
Run Code Online (Sandbox Code Playgroud)

这永远不会被评估为真,因为它找不到我正在描述的标签.我决定直接从打印出既响应MechanizeBeautifulSoup,这是我得到了(缩短):

Mechanize 打印我要找的代码,这意味着响应正确回复:

...
<TD class=msgarea>
<B class=important_msg>There was a problem with your request:</B>
<BR>
<BR>
<li class=red_msg>...</li>
...
</TD></TR></TABLE><P></DIV>
... …
Run Code Online (Sandbox Code Playgroud)

python beautifulsoup html-parsing

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

如何在bash中为变量赋值数组长度

我正在尝试编写一个简单的bash脚本,它可以添加整数并提供总和.我认为最简单的方法是将输入分配给数组.然后遍历数组以执行求和.我需要在for循环中使用数组的长度,并且无法弄清楚如何将数组长度分配给变量.

任何帮助在简单的脚本(我做了学习bash)上表示赞赏

#!/bin/bash
# add1 : adding user supplied ints

echo -n "Please enter any number of integers: "
read -a input

echo "Your input is ${input[*]}"
echo "${#input[@]} number of elements"

num = ${#input[@]}   # causing error
for ((i = 0; i < "${num}"; ++i )); do  # causing error
  sum = $((sum + input[$i]))
done

echo "The sum of your input is $sum"
Run Code Online (Sandbox Code Playgroud)

这会产生错误:

line 10: num: command not found 
line 11: ((: i < :syntax error: operand …
Run Code Online (Sandbox Code Playgroud)

bash

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

访问函数内部的变量

我正在寻找任何一个小例子或什么来帮助我,我找不到它.我觉得我错过了一些明显的东西.我在一个.py文件中有一个大函数,我想在另一个.py文件中调用并使用函数中的所有变量而我无法做到.所以我试图用一个小例子来做它仍然无法得到它.假设我有一个包含以下内容的文件mod1.py:

def mod(num):
    a = 5
    b = 6
    c = num
Run Code Online (Sandbox Code Playgroud)

我尝试添加各种各样的回报,仍然无法让它工作.但我在一个名为mod_read.py的文件中调用它:

import mod1

mod1.mod(1)
d = mod1.mod.a
print(d)
Run Code Online (Sandbox Code Playgroud)

当我运行mod_read.py时,我收到错误:"AttributeError:'function'对象没有属性'a'".我错过了什么明显的事情?

python module

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

有没有办法找到带有标准库的应用程序的路径?

我想知道是否可以在 Windows 7 下找到具有标准 python 2.7 库的应用程序(例如 MS Excel)的安装目录。我的意思是,它不应该使用任何 pywin32 或 xlrd 等。

也许它会查找注册表来找到安装路径?

python windows installation-path

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

用Python逐行编写一个文本文件

我需要逐行写一个文本文件.此代码逐行打印文本,但只有最后一行存储在result.txt文件中.

import re
import fileinput
for line in fileinput.input("test.txt"):
    new_str = re.sub('[^a-zA-Z0-9\n\.]'," ", line)
    print new_str
open('result.txt', 'w').write(new_str)
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

改变我正在迭代的列表时出现意外行为

我对Python比较陌生,我不能为我的生活弄清楚这里发生了什么.当for用于遍历列表时,Python正在跳过所有其他数字,但仅在一定数量的元素之后.这是我正在处理的更大项目的一部分,但是这段代码说明了它.

代码正常工作到7,此时它开始跳过其他所有数字.我知道不要编辑我正在迭代过程中的列表,所以我要避免这样做,但是for甚至没有调用它们中的一些.我需要做些什么来让它循环遍历每个数字而不是其他所有数字?它为什么这样做?

码:

import math

i1 = 60
l1 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 49, 53, 59]
l3 = l1

print(l1)
for a in l1:
    print(a)
    if a > math.floor(math.sqrt(i1)):
        print("REMOVED: " + str(a))
        l3.remove(a)

print(l3)
Run Code Online (Sandbox Code Playgroud)

输出:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 49, 53, 59]
2
3
5
7
11
REMOVED: 11
17
REMOVED: 17 …
Run Code Online (Sandbox Code Playgroud)

python list python-3.x

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

我正在尝试使用dict构建一个sqlalchemy引擎,该字典具有从tkinter解析到的变量

非常感激任何的帮助。我有一个使用sqlalchemy的连接引擎,它可以完美连接。我想在用户在tkinter条目框中提供信息的地方使其动态化,然后将该信息解析为字典,然后由函数调用该字典,然后从那里创建引擎。

我的工作引擎是:

engine =    sqlalchemy.create_engine('postgresql+pg8000://myuser:mypass@localhost/mydb')
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西

sqlalchemy.create_engine('postgresql+pg8000://DBUSER:DBPASS@DBHOST/DBNAME')
Run Code Online (Sandbox Code Playgroud)

其中,变量首先由tkinter Entry提供,并放入dict中,然后由连接函数读取。

我有以下

from sqlalchemy import create_engine
from sqlalchemy.engine import url

"""
These vars below are for testing. Ultimately they will be resolved
by a get() from tkinter which will take the values entered by a 
user into an Entry widget and place them into the dict below. 
The db_connect() func should build the url from the dict.
"""

DBNAME = 'mydb'
DBUSER = 'myuser'
DBPASS = 'password'
DBHOST ='localhost'
PNUM = '5432' …
Run Code Online (Sandbox Code Playgroud)

python dictionary sqlalchemy

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

Python Pickle帮助

我不确定为什么这个Pickle示例没有显示两个字典定义.据我所知,"ab +"应该意味着pickle.dat文件被附加到并且可以从中读取.我是整个泡菜概念的新手,但网上的教程似乎不仅仅是初始存储.

import cPickle as pickle

def append_object(d, fname):
    """appends a pickle dump of d to fname"""
    print "append_hash", d, fname
    with open(fname, 'ab') as pickler:
        pickle.dump(d, pickler)

db_file = 'pickle.dat'

cartoon = {}
cartoon['Mouse'] = 'Mickey'
append_object(cartoon, db_file)

cartoon = {}
cartoon['Bird'] = 'Tweety'
append_object(cartoon, db_file)

print 'loading from pickler'
with open(db_file, 'rb') as pickler:
    cartoon = pickle.load(pickler)
print 'loaded', cartoon
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望使用for循环构建一个字典,然后将key:value对添加到pickle.dat文件,然后清除字典以节省一些RAM.

这里发生了什么?

python pickle

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

函数似乎返回多个结果或:什么是隐式元组解包

有人可以解释下面的代码行吗?它是某种嵌套for循环吗?如果是这样,有人可以将其重写为等效的嵌套for循环.allPositions参数是一个列表,synapsesPerSegment是一个int变量.

for rx,ry in random.sample(allPositions, synapsesPerSegment):
Run Code Online (Sandbox Code Playgroud)

python for-loop

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

运算符优先级与复数

这应该是不言自明的

>>> (1+2j).real  #Normal Usage
1.0
>>> (1+2j).imag  #Normal Usage
2.0
>>> 1+2j.real  #Normal Usage
1.0
>>> 1+2j.imag  #Flips Out
3.0
>>> 123+657j.real
123.0
>>> 123+657j.imag
780.0
Run Code Online (Sandbox Code Playgroud)

z.imag以某种方式累加了实部和虚部.
我发现这很有趣..这是一个错误还是这是一个故意的功能?

python cmath

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