小编Jon*_*nts的帖子

xlwt限制行数

当我运行python工具通过读取xml文件创建xls文件时,我得到了以下错误.我如何解决它?

ValueError: row index (65536) not an int in range(65536)
File "D:\Zipfiles\Script_try.py", line 82, in _execute_test
    self.parser = parser()
  File "D:\Zipfiles\Script_try.py", line 216, in __init__
    self._xml_parser()
  File "D:\Zipfiles\Script_try.py", line 306, in _xml_parser
    sheet1.write(row,1,[test_x.attrib['name']],centr)
  File "C:\Python26\lib\site-packages\xlwt\Worksheet.py", line 1030, in write
    self.row(r).write(c, label, style)
  File "C:\Python26\lib\site-packages\xlwt\Worksheet.py", line 1078, in row
    self.__rows[indx] = self.Row(indx, self)
  File "C:\Python26\lib\site-packages\xlwt\Row.py", line 42, in __init__
    raise ValueError("row index (%r) not an int in range(65536)" % rowx)
ValueError: row index (65536) not an int in range(65536)
Run Code Online (Sandbox Code Playgroud)

python xlwt python-2.7

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

如何在Python 3中将浮点字符串转换为整数

我是整个编码的新手...所以这里.只是想写一个简单的猜数游戏,还要做输入验证.因此只接受整数作为输入.我已经弄清楚如何清除字母字符,所以我可以将数字转换为整数.当我输入一个浮点数时,我遇到了麻烦.我无法让它将浮点数转换为整数.任何帮助表示赞赏.正如我所说,我正在谈论这个编码的第3天,所以试着理解我的小知识.提前致谢.

这是我的主程序的功能.

def validateInput():
    while True:
        global userGuess
        userGuess = input("Please enter a number from 1 to 100. ")
        if userGuess.isalpha() == False:
            userGuess = int(userGuess)
            print(type(userGuess), "at 'isalpha() == False'")
            break
        elif userGuess.isalpha() == True:
            print("Please enter whole numbers only, no words.")
            print(type(userGuess), "at 'isalpha() == True'")
    return userGuess
Run Code Online (Sandbox Code Playgroud)

如果我使用4.3(或任何浮点数)作为输入,这是我得到的错误.

Traceback (most recent call last):
File "C:\\*******.py\line 58, in <module>
validateInput()
File "C:\\*******.py\line 28, in validateInput
userGuess = int(userGuess)
ValueError: invalid literal for int() with base 10: '4.3'
Run Code Online (Sandbox Code Playgroud)

python data-conversion python-3.x floating-point-conversion

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

python re模块中'[ab] +'是否等于'(a | b)+'?

我认为pat1 ='[ab]'和pat2 ='a | b'在Python(python2.7,windows)'re'模块中具有与正则表达式模式相同的功能.但是我对'[ab] +'和'(a | b)+'感到困惑,它们是否具有相同的功能,如果没有,你可以解释细节.

'''
Created on 2012-9-4

@author: melo
'''

import re
pat1 = '(a|b)+'
pat2 = '[ab]+'
text = '22ababbbaa33aaa44b55bb66abaa77babab88'

m1 = re.search(pat1, text)
m2 = re.search(pat2, text)
print 'search with pat1:', m1.group()
print 'search with pat2:', m2.group()

m11 = re.split(pat1, text)
m22 = re.split(pat2, text)
print 'split with pat1:', m11
print 'split with pat2:', m22

m111 = re.findall(pat1, text)
m222 = re.findall(pat2, text)
print 'findall with pat1:', m111
print 'findall with pat2:', m222 …
Run Code Online (Sandbox Code Playgroud)

python regex python-2.7

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

什么是堆队列?

阅读Guido对于使用Python在2MB RAM中排序一百万个32位整数的问题的臭名昭着的答案,我发现了模块heapq.

我也发现我不了解杰克,也不知道我能用它做什么.

你能解释一下(用众所周知的6年目标)什么是堆队列算法以及你可以用它做什么?

你能提供一个简单的 Python片段heapq吗?使用它(使用模块)解决了一个问题,这个问题可以用它来解决,而不是用别的东西解决?

python

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

使用Selenium和Beautiful Soup的Python Scraping JavaScript

我正在尝试使用BS和Selenium抓取一个JavaScript启用页面.到目前为止,我有以下代码.它仍然不会以某种方式检测JavaScript(并返回一个空值).在这种情况下,我试图在底部刮掉Facebook的评论.(Inspect元素将类显示为postText)
感谢您的帮助!

from selenium import webdriver  
from selenium.common.exceptions import NoSuchElementException  
from selenium.webdriver.common.keys import Keys  
import BeautifulSoup

browser = webdriver.Firefox()  
browser.get('http://techcrunch.com/2012/05/15/facebook-lightbox/')  
html_source = browser.page_source  
browser.quit()

soup = BeautifulSoup.BeautifulSoup(html_source)  
comments = soup("div", {"class":"postText"})  
print comments
Run Code Online (Sandbox Code Playgroud)

python selenium screen-scraping beautifulsoup

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

Python 3 os.urandom

我在哪里可以找到os.urandom上的完整教程或文档?我需要得到一个随机的int来从一个80字符串的字符串中选择一个字符

我在aser aspire 5920上运行Ubuntu 12.04

python random python-3.x

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

如何在Python中与Chess引擎通信?

在win 7上,我可以通过命令行与国际象棋引擎进行通信.Win 7 上与Stockfish的小例子会话:

C:\run\Stockfish>stockfish-x64.exe
Stockfish 2.2.2 JA SSE42 by Tord Romstad, Marco Costalba and Joona Kiiski
quit

C:\run\Stockfish>
Run Code Online (Sandbox Code Playgroud)

第一行由引擎输出,'quit'是我输入的退出引擎(我还可以做其他事情,但这对我来说很清楚).

现在我想从python与该引擎通信:

import subprocess
engine = subprocess.Popen(
    'stockfish-x64.exe',
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
)
for line in engine.stdout:
    print(line.strip())
engine.stdin.write('quit\n')
Run Code Online (Sandbox Code Playgroud)

我明白了

C:\run\Stockfish>communicate.py
b'Stockfish 2.2.2 JA SSE42 by Tord Romstad, Marco Costalba and Joona Kiiski'
Run Code Online (Sandbox Code Playgroud)

但它没有退出引擎(没有C:\ run\Stockfish>提示),它一直在等待输入.我必须手动关上窗户.似乎没有把我的退出消息(python脚本的最后一行)写入stdin.

换句话说,我可以从stdout读取,但是当我写入stdin时,没有任何事情发生.

我做错了什么,怎么做对了?


编辑:好的,感谢larsmans的帮助我解决了它:

示例Python脚本:

import subprocess, time

engine = subprocess.Popen(
    'stockfish-x64.exe',
    universal_newlines=True,
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
)

def put(command):
    print('\nyou:\n\t'+command)
    engine.stdin.write(command+'\n')

def get():
    # using the …
Run Code Online (Sandbox Code Playgroud)

python chess process python-3.x

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

递归DotDict

我有一个实用程序类,使得Python字典在获取和设置属性方面的行为有点像JavaScript对象.

class DotDict(dict):
    """
    a dictionary that supports dot notation 
    as well as dictionary access notation 
    usage: d = DotDict() or d = DotDict({'val1':'first'})
    set attributes: d.val2 = 'second' or d['val2'] = 'second'
    get attributes: d.val2 or d['val2']
    """
    __getattr__ = dict.__getitem__
    __setattr__ = dict.__setitem__
    __delattr__ = dict.__delitem__
Run Code Online (Sandbox Code Playgroud)

我想这样做它也将嵌套的字典转换成DotDict()实例.我希望能够做这样的事有__init____new__,但我还没有拿出任何的工作原理:

def __init__(self, dct):
    for key in dct.keys():
        if hasattr(dct[key], 'keys'):
            dct[key] = DotDict(dct[key])
Run Code Online (Sandbox Code Playgroud)

如何递归地将嵌套字典转换为DotDict()实例?

>>> dct = {'scalar_value':1, 'nested_dict':{'value':2}}
>>> dct = DotDict(dct)

>>> print dct
{'scalar_value': …
Run Code Online (Sandbox Code Playgroud)

python recursion dictionary

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

如何避免使用Python 2.7在OS X 10.8上创建.pyc文件?

似乎在OS X 10.8(使用Python 2.7)上,.pyc即使您设置了环境变量,也会创建文件PYTHONDONTWRITEBYTECODE=1

如何防止这种情况发生,或者我如何说服Python不要在与源文件相同的位置创建这些文件.

python macos pyc python-2.7 osx-mountain-lion

8
推荐指数
3
解决办法
4214
查看次数

Python多处理进程以静默方式崩溃

我正在使用Python 2.7.3.我使用子类multiprocessing.Process对象并行化了一些代码.如果我的子类Process对象中的代码没有错误,那么一切运行正常.但是,如果有在我的子类的过程对象代码中的错误,他们显然会崩溃默默(没有堆栈跟踪打印到父shell)和CPU使用率将下降到零.父代码永远不会崩溃,给人的印象是执行只是挂起.同时,很难追踪代码中的错误,因为没有给出关于错误位置的指示.

我在stackoverflow上找不到任何其他问题来处理同样的问题.

我想子类化的Process对象似乎是静默崩溃的,因为它们无法向父shell发送错误消息,但我想知道我能做些什么,这样我至少可以更高效地调试(以及其他我的代码的用户可以告诉我他们何时遇到问题).

编辑:我的实际代码过于复杂,但在它的错误的子类的处理对象的一个简单的例子是这样的:

from multiprocessing import Process, Queue

class Worker(Process):

    def __init__(self, inputQueue, outputQueue):

        super(Worker, self).__init__()

        self.inputQueue = inputQueue
        self.outputQueue = outputQueue

    def run(self):

        for i in iter(self.inputQueue.get, 'STOP'):

            # (code that does stuff)

            1 / 0 # Dumb error

            # (more code that does stuff)

            self.outputQueue.put(result)
Run Code Online (Sandbox Code Playgroud)

python parallel-processing multiprocessing python-2.7

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