小编Li-*_*Yip的帖子

如何将数据写入csv格式为字符串(而不是文件)?

我想将数据[1,2,'a','He said "what do you mean?"']转换为csv格式的字符串.

通常人们可以使用csv.writer()它,因为它处理所有疯狂的边缘情况(逗号转义,引用标记转义,CSV方言等).捕获是csv.writer()期望输出到文件对象,而不是字符串.

我目前的解决方案是这个有点hacky函数:

def CSV_String_Writeline(data):
    class Dummy_Writer:
        def write(self,instring):
            self.outstring = instring.strip("\r\n")
    dw = Dummy_Writer()
    csv_w = csv.writer( dw )
    csv_w.writerow(data)
    return dw.outstring
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供更优雅的解决方案,仍能很好地处理边缘情况吗?

编辑:这是我最终如何做到这一点:

def csv2string(data):
    si = StringIO.StringIO()
    cw = csv.writer(si)
    cw.writerow(data)
    return si.getvalue().strip('\r\n')
Run Code Online (Sandbox Code Playgroud)

python csv string

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

从脚本驱动Windows GUI程序

我必须使用Windows模拟包来执行重复性任务,每次都有稍微不同的选项.

由于我讨厌重复点击,基于懒惰和人类引入的错误数量,我想自动驾驶这个程序.有问题的程序不支持脚本,没有API,没有COM,nada,nyet,nravin.据我所知,自动驱动该程序的唯一方法是模仿人(即键盘和鼠标宏).

我知道AutoHotKey,但我认为它不符合我的要求.(或者它可能会做我想要的,但它的脚本语言很糟糕.)

要求是:

  • 必须允许操作之间的时间延迟,或事件检测以触发操作.

    模拟运行最多可能需要十分钟,因此GUI驱动程序必须等到模拟完成后再开始新模拟.

    一种方法是等待十分钟,并希望模拟完成.另一种方法是使其成为事件驱动的,即观察"模拟运行..."对话框消失并替换为"模拟完成"对话框.

  • 必须允许复杂键盘输入的组合.

    每次模拟运行所需的一些键盘输入是不同的.例如,模拟描述可能采用格式,[Project name][Scenario name][Option 1][Option 2]...并且必须为每个模拟输入.

    我知道AutoHotKey允许基本级别的输入自定义,但我随意阅读文档使得脚本语言看起来像某种恶意恐怖.

  • 这是为了工作,所以任何解决方案都必须免费用于商业用途.

我将接受任何符合上述标准的解决方案,但我非常喜欢可以从Python驱动的东西.但是,我也会接受自动化的GUI测试工具,我可以自定义做我想要的 - 可能是一个Win32 GUI相当于Selenium的浏览器? - 键盘宏录制器,它将生成自定义输出或其他任何有效的输出.

python user-interface winapi automation gui-testing

23
推荐指数
4
解决办法
3万
查看次数

如何在Python中求解方程式?

假设我有一个等式:

2x + 6 = 12

用代数我们可以看到x = 3.如何在Python中创建可以解决的程序x?我是新的节目,我看了看eval()exec(),但我无法弄清楚如何让他们做我想做的.我不想使用外部库(例如SAGE),我想在纯Python中执行此操作.

python equation calculator

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

如何使用python将XML文件保存到磁盘?

我有一些python代码用xml.dom.minidom生成一些XML文本.现在,我从终端运行它,结果输出一个结构化的XML.我还想生成一个XML文件并将其保存到我的磁盘.怎么可能这样呢?

这就是我所拥有的:

import xml
from xml.dom.minidom import Document
import copy


class dict2xml(object):
    doc     = Document()

    def __init__(self, structure):
        if len(structure) == 1:
            rootName    = str(structure.keys()[0])
            self.root   = self.doc.createElement(rootName)

            self.doc.appendChild(self.root)
            self.build(self.root, structure[rootName])

    def build(self, father, structure):
        if type(structure) == dict:
            for k in structure:
                tag = self.doc.createElement(k)
                father.appendChild(tag)
                self.build(tag, structure[k])

        elif type(structure) == list:
            grandFather = father.parentNode
            tagName     = father.tagName
            # grandFather.removeChild(father)
            for l in structure:
                tag = self.doc.createElement(tagName.rstrip('s'))
                self.build(tag, l)
                father.appendChild(tag)

        else:
            data    = str(structure)
            tag     = self.doc.createTextNode(data)
            father.appendChild(tag)

    def …
Run Code Online (Sandbox Code Playgroud)

python xml file

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

用于分发片段的算法

嗨,我正在为一家以这种方式运作的制造公司工作

我们得到特定尺寸的材料卷,我们的供应商可以说每卷8000米.然后我们从2000米,3000米等小尺寸的不同客户处获得订单.我想知道如何创建一个软件,他们只需输入他们当前的卷尺和我们现在拥有的不同订单.生成切割不同卷的最佳方法,以尽量减少浪费.

例如,在特定时间点我们可能有以下订单:2件3000米2件4000米6件1500米

然后我们应该输入的是上面的订单以及供应商为我们提供的卷尺寸我们假设它是8000米.

然后软件应该生成输出,例如Roll 1 - 两件4000米Roll Wasted 0 Roll 2 - 两件3000米和1件1500(Roll Wasted 500)Roll 3 - 五件15000(Roll Wasted 500)

应该优化脚本,因为上面的例子非常小.通常情况下,我们一次会订购约200件

我正在考虑在PHP和MYSQL中这样做,因此它可以基于Web,公司周围的人可以使用它.

我知道我们可以通过蛮力尝试每种组合来做到这一点.但在这种情况下是否还有其他排序算法和技术可以提供帮助.

php algorithm

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

Python docstring搜索 - 类似于MATLAB`lookup`或Linux`apropos`

有没有办法从解释器执行模块和函数docstrings的关键字搜索

通常,当我想用​​Python做一些事情时,我知道有一个模块可以做我想要的,但我不知道它叫什么.我想要一种搜索"执行X的函数或模块的名称"而不必使用Google "python do X"的方法.

以"如何打开URL"为例?在Linux shell中,我可能会尝试>> apropos open url.在MATLAB下,我可能会尝试>> lookup open url.这两个都会给我列出在其手册页或doc字符串中包含"open"和"URL"字样的函数或模块.例如:

urllib.urlopen   : Create a file-like object for the specified URL to read from.
urllib2.urlopen  : ...
...
Run Code Online (Sandbox Code Playgroud)

我想要搜索所有已安装的模块,而不仅仅是已经import编入我当前会话的模块.

是的,谷歌是搜索Python文档字符串的好方法,但延迟有点高.;)

python

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

生成摘要("pivot"?)表

我想要一种总结数据库表的方法,以便将共享公共ID的行汇总到一行输出中.

我的工具是SQLite和Python 2.x.

例如,鉴于以下我当地超市的水果价格表......

+--------------------+--------------------+--------------------+
|Fruit               |Shop                |Price               |
+--------------------+--------------------+--------------------+
|Apple               |Coles               |$1.50               |
|Apple               |Woolworths          |$1.60               |
|Apple               |IGA                 |$1.70               |
|Banana              |Coles               |$0.50               |
|Banana              |Woolworths          |$0.60               |
|Banana              |IGA                 |$0.70               |
|Cherry              |Coles               |$5.00               |
|Date                |Coles               |$2.00               |
|Date                |Woolworths          |$2.10               |
|Elderberry          |IGA                 |$10.00              |
+--------------------+--------------------+--------------------+
Run Code Online (Sandbox Code Playgroud)

...我想制作一个汇总表,向我展示每个超市的每种水果的价格.空格应填充NULL.

+----------+----------+----------+----------+
|Fruit     |Coles     |Woolworths|IGA       |
+----------+----------+----------+----------+
|Apple     |$1.50     |$1.60     |$1.70     |
|Banana    |$0.50     |$0.60     |$0.70     |
|Cherry    |NULL      |$5.00     |NULL      |
|Date      |$2.00     |$2.10     |NULL      |
|Elderberry|NULL      |NULL …
Run Code Online (Sandbox Code Playgroud)

python sqlite

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

最大化矩阵中"非重叠"数字的总和

只是寻找一些方向,我意识到给出的例子可以使用强力迭代来解决,但我正在寻找一个更优雅(即数学?)解决方案,它可以解决更大的例子(比如20x20或30x30) ).完全有可能无法做到这一点,而且我在提出一种不依赖蛮力的方法方面收效甚微......

我有一个矩阵(称之为A),它是nxn.我希望从矩阵A中选择一个子集(称之为B).子集将由n个元素组成,其中从每一行和A的每一列中取出一个且只有一个元素.输出应提供解决方案( B)使得构成B的元素的总和是给定这些约束的最大可能值(例如,在下面的示例中为25).如果找到B的多个实例(即,给出相同最大总和的不同解),则应选择具有最大最小元素的B的解.

B也可以是n×n的选择矩阵,但是只有n个期望的元素是非零的.

例如:如果A =

|5 4 3 2 1|
|4 3 2 1 5|
|3 2 1 5 4|
|2 1 5 4 3|
|1 5 4 3 2|
Run Code Online (Sandbox Code Playgroud)

=> B会的

|5 5 5 5 5|
Run Code Online (Sandbox Code Playgroud)

但是,如果A =

|5 4 3|
|4 3 2|
|3 2 1|
Run Code Online (Sandbox Code Playgroud)

B =

|3 3 3|
Run Code Online (Sandbox Code Playgroud)

因为B的最小元素是3,它大于

|5 3 1|
Run Code Online (Sandbox Code Playgroud)

要么

|4 4 1|
Run Code Online (Sandbox Code Playgroud)

这也是9的总和

algorithm matrix mathematical-optimization dynamic-programming

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

php找到表情符号[更新现有代码]

我正在尝试在我的PHP代码中检测表情符号,并阻止用户输入它.

我的代码是:

if(preg_match('/\xEE[\x80-\xBF][\x80-\xBF]|\xEF[\x81-\x83][\x80-\xBF]/', $value) > 0)
{
    //warning...
}
Run Code Online (Sandbox Code Playgroud)

但不适用于所有表情符号.有任何想法吗?

php regex unicode emoji

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

`easygui` - 对话框在创建时没有获得焦点

我使用的是 Python 2.7.9、easygui 0.97.4Windows 7。

我正在尝试使用以下内容弹出一个对话框:

import easygui
easygui.msgbox()
Run Code Online (Sandbox Code Playgroud)

我希望弹出一个对话框并进入前台,集中注意力。有时,会发生这种情况。其他时候,对话框不会出现在前面,而是出现在所有其他窗口的后面。

对话框是出现在前面,还是隐藏在其他窗口后面,似乎取决于一些不可预测的事情。给出不同的论点easygui.msgbox()似乎没有帮助。重新启动 Python 解释器有时会使其工作,有时则不会。

这个问题对于简单的对话框来说还不错,至少在任务栏中有一个闪烁的按钮来引起你的注意。

在此处输入图片说明

更糟糕的是diropenbox(),它不会在任务栏中产生闪烁的按钮。对话框在一个窗口后面生成并且没有证据表明它在那里,直到您最小化所有其他窗口。

在此处输入图片说明

在此处输入图片说明

如何强制easygui对话框始终出现在前面并始终聚焦,而不是隐藏在其他窗口后面?

我仔细阅读了Github robertlugg/easygui问题跟踪器,似乎没有关于此问题的任何未解决的错误报告。


编辑:我打开了一个错误报告 - https://github.com/robertlugg/easygui/issues/76

python easygui

5
推荐指数
0
解决办法
992
查看次数