私信  •  关注

David

David 最近创建的主题
David 最近回复了
10 年前
回复了 David 创建的主题 » python中的枚举[重复]

在PEP 435之前,Python没有类似的版本,但您可以实现自己的版本。

我自己,我喜欢保持简单(我在网上看到过一些非常复杂的例子),像这样的。。。

class Animal:
    DOG = 1
    CAT = 2

x = Animal.DOG

在Python 3.4中( PEP 435 ),你可以 Enum name 还有 value .

from enum import Enum

class Animal(Enum):
    DOG = 1
    CAT = 2

print(Animal.DOG)
# <Animal.DOG: 1>

print(Animal.DOG.value)
# 1

print(Animal.DOG.name)
# "DOG"

如果不想键入值,请使用以下快捷方式:

class Animal(Enum):
    DOG, CAT = range(2)

Enum 实现 can be converted to lists and are iterable .其成员的顺序是声明顺序,与他们的价值观无关。例如:

class Animal(Enum):
    DOG = 1
    CAT = 2
    COW = 0

list(Animal)
# [<Animal.DOG: 1>, <Animal.CAT: 2>, <Animal.COW: 0>]

[animal.value for animal in Animal]
# [1, 2, 0]

Animal.CAT in Animal
# True
1 年前
回复了 David 创建的主题 » 使用jquery使用escape键关闭模式

您正在使用两种不同的方法来显示/隐藏模态。你可以这样展示:

$('.modal').toggleClass('visible')

但要像这样隐藏它:

$(".modal").hide()

那是两个 非常不同的事情 根据 the documentation :

这大致相当于打电话 .css( "display", "none" )

你基本上是在叠加两种不同的“隐藏”。莫代尔号仍然有 visible 同学们,你们刚刚改变了 display 不再出现。

如果你想使用 看得见的 同学们,要和那个方法保持一致。你可以用这个来隐藏它:

$(“.modal”)。toggleClass('visible')

不过,只需在页面上按ESC键,它也会重新显示 可能 不是你想要的。所以用这个更明确地隐藏它:

$('.modal').removeClass('visible')
2 年前
回复了 David 创建的主题 » 选择PHP/jQuery国家/州表单字段

你可以替换 <select> 带着 <input> ,但你永远都无法取代 <输入> 用一个 <选择> .我想你可以在 if 阻止你的病情:

if (string !== '') {
    $('#inputState').replaceWith('<select class="form-select" aria-label="Default select example" id="inputState" name="state">' + string + '</select>');
} else {
    $('#inputState').replaceWith('<input id="inputOtherstate" placeholder="State or Region" type="text" class="form-control" name="other-state" />');
}

另一种选择是,两个表单元素都存在,但有一个隐藏。那你就可以 .show() .hide() 然后根据需要形成元素,而不是完全替换它们。如果将事件处理程序附加到它们上,这将特别有用,因为替换它们将摆脱那些事件处理程序。

2 年前
回复了 David 创建的主题 » 如何将字典中的一些键分组到python中的嵌套键?

另一个答案只有在收入和职业值的数量固定为2时才有效。

下面是一个更加动态的解决方案:
组织列表 是你在上面定义的列表吗
终结者 这是你想要的清单吗

def getApplicant(entry):
    tempAppList = []
    for key in [key for key, value in entry.items() if 'Applicant_Income' in key]:
        tempAppDict = {}
        tempAppDict['Applicant_Income'] = entry[key]
        tempAppDict['Applicant_Occupation'] = entry[key.replace('Income', 'Occupation')]
        tempAppList.append(tempAppDict)
    
    return tempAppList

finalList = []

for entry in orgList:
    tempDict = {}
    tempDict['LoanID'] = entry['LoanID']
    tempDict['Applicant'] = getApplicant(entry)
    tempDict['LoanAmount'] = entry['LoanAmount']
    
    finalList.append(tempDict)

输出:

[
    {
        "LoanID": "001",
        "Applicant": [
            {
                "Applicant_Income": 5000,
                "Applicant_Occupation": "Manager"
            },
            {
                "Applicant_Income": 3000,
                "Applicant_Occupation": "Accountant"
            }
        ],
        "LoanAmount": 10000
    },
    {
        "LoanID": "002",
        "Applicant": [
            {
                "Applicant_Income": 6000,
                "Applicant_Occupation": "Senior Manager"
            },
            {
                "Applicant_Income": 2000,
                "Applicant_Occupation": "Services"
            }
        ],
        "LoanAmount": 8000
    }
]

注意:整数上不允许使用前导零(就像LoadId上一样)。所以你需要用一个字符串

2 年前
回复了 David 创建的主题 » 使用jQuery从父节点中的元素中删除类

.each() 用于创建一个将迭代结果的回调函数。要简单地查找匹配的子体并将结果提供给下一个链接jQuery函数,请使用 .find() :

$(this).closest('.row').find('.hide').removeClass('hide');
4 年前
回复了 David 创建的主题 » 如何使用用于python的Wikipedia API获取图像标题

如果您要获取的是图像标记的title属性(即,来自HTML),则可以执行类似于以下操作:

import wikipedia
from html.parser import HTMLParser

class WikipediaImageParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        if tag == 'img':
            try:
                print(dict(attrs)['title'])
            except KeyError as e:
                return # do nothing

page = wikipedia.page("History_of_Japan")
parser = WikipediaImageParser()
parser.feed(page.html())

您可以解析HTML来获取每个图像的属性,然后检查是否有title属性。

5 年前
回复了 David 创建的主题 » 在pyCharm中调试python代码并在运行时更改变量

在Pycharm 2018.3.4中,您只需单击 控制台选项卡 然后在 显示命令提示 按钮。

changing variables at runtime in PyCharm

现在你可以输入 电子邮件 电子邮件.pop() 例如,为了操作变量:

python command prompt

您也可以参考这篇文章,其中讨论了旧版本: change variable in Pycharm debugger

加载新内容后,必须重新初始化插件。但是你 不要 必须重新初始化 每一个 页面上的匹配元素。将匹配集限制为仅新加载的内容。

您没有显示加载新内容的ajax代码,但是 大概 当您这样做时,您有某种方法来标识要将内容加载到的特定容器或要加载的特定元素。(如果没有,你就需要这么做。)

为了便于讨论,假设在加载新内容时,您通过jquery对一个元素有一个引用,该引用只唯一地标识新内容。例如:

let newDiv = $('.comment-said').last();

您可以在选择器中使用它来初始化插件:

$('.react', newDiv).Reactions({
    postUrl: 'addlike.php'
});

这将只匹配其中的“.react”元素 newDiv 元素。您甚至不需要单独的变量,您可以更具体地直接选择:

$('.comment-said').last().find('.react').Reactions({
    postUrl: 'addlike.php'
});

或者jquery中的任何一种方法来专门针对您想要针对的元素。最后,在重新初始化插件时,需要做的只是更明确地标识要初始化的元素,而不是整个页面上的所有“.react”元素。

14 年前
回复了 David 创建的主题 » php python样式的函数变量[重复]

有些人可能会说,这并不十分漂亮,但它确实很成功。

class NamedArguments {

    static function init($args) {
        $assoc = reset($args);
        if (is_array($assoc)) {
            $diff = array_diff(array_keys($assoc), array_keys($args));
            if (empty($diff)) return $assoc;
            trigger_error('Invalid parameters: '.join(',',$diff), E_USER_ERROR);
        }
        return array();
    }

}

class Test {

    public static function foobar($required, $optional1 = '', $optional2 = '') {
        extract(NamedArguments::init(get_defined_vars()));
        printf("required: %s, optional1: %s, optional2: %s\n", $required, $optional1, $optional2);
    }

}

Test::foobar("required", "optional1", "optional2");
Test::foobar(array(
    'required' => 'required', 
    'optional1' => 'optional1', 
    'optional2' => 'optional2'
    ));
4 年前
回复了 David 创建的主题 » 如何在mysql select return中标识为key

使用 WHERE 条件

SELECT * FROM table WHERE ID = yourId

只是替换 yourId 你想要的身份证号码。

5 年前
回复了 David 创建的主题 » python单元测试google bigquery

虽然可以在这里改进mock,但作为测试,它不会为您提供太多价值。在您的代码中,有两个基本的东西可以测试:

  1. 您是否传递了正确的凭据等以正确使用bigquery。
  2. 应用程序的查询和结果处理的业务逻辑是否正确。

对于(1),没有单元测试会让您真正确信您的代码在gcp上工作。它所能做的就是显示它做了测试所检查的事情。与其进行单元测试,不如考虑某种集成或系统测试,这种集成或系统测试实际上会对gcp进行真正的调用(但不要像单元测试那样频繁地运行它)

单元测试非常适合(2),但是您当前的功能实际上什么也做不了。如果你这样做了-比如说一些代码为每个结果行实例化了一个对象-那么我们可以对其进行单元测试。

5 年前
回复了 David 创建的主题 » PyCharm是如何工作的?他们是怎么联系到翻译的?

多亏了“非我”,我可以从Gythub Src在PyDeV上进行调试。 sys.settrace 这导致了一篇关于本周python模块的文章 settrace

一旦跟踪脚本拥有堆栈帧,检查帧的堆栈内容和/或使用 code/exec/eval 在上下文中运行“watch”语句。至于断点,这将是微不足道的,因为它只是一个匹配帧的行号和文件路径的任务。

尝试 restarting the instance 看看有没有帮助。

5 年前
回复了 David 创建的主题 » GCP-SQL在MySQL上设置多个SQL模式标志

There's a Feature Request open for this ,但从2017年起就没有更新过。

解决方法是使用 SET SESSION sql_mode='TRADITIONAL,ALLOW_INVALID_DATES' .

5 年前
回复了 David 创建的主题 » 用python从文本文件中提取数据

尝试read().splitlines()。

例如:

from io import StringIO

def mkString():
    return StringIO("""CATEG:
        DATA1
        DATA2
        ...
        DATA_N
        CATEG:
        DATA1
        ....""")

mkString().read().splitlines()