小编And*_*ndy的帖子

如何在 Python 中安全地使用 exec()?

我的任务是构建一个应用程序,最终用户可以在其中使用自定义规则来评估返回的查询是否导致警告或警报(基于自己的阈值)。

我已经为用户构建了一种方法来模板化他们的逻辑。一个示例如下所示:

if (abs(<<21>>) >= abs(<<22>>)):
    retVal = <<21>>
else:
    retVal = <<22>>
Run Code Online (Sandbox Code Playgroud)

<<21>><<22>>参数将与前面在该程序中找到的值来代替。一旦所有这些替换发生,我就有一个非常简单的 if/else 块(在本例中),它看起来像这样存储在变量 ( execCd) 中:

if (abs(22.0) >= abs(-162.0)):
    retVal = 22.0
else:
    retVal = -162.0
Run Code Online (Sandbox Code Playgroud)

这将exec()正确。现在,我怎样才能确保这一点?我看过这篇文章:http : //lybniz2.sourceforge.net/safeeval.html

我的代码最终看起来像这样:

safe_list = ['math','acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'de grees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] 
safe_dict = dict([ (k, locals().get(k, None)) for k …
Run Code Online (Sandbox Code Playgroud)

python exec

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

如何根据字段合并两个CSV文件并在每条记录上保留相同数量的属性?

我试图根据每个文件中的特定字段合并两个CSV文件.

file1.csv

id,attr1,attr2,attr3
1,True,7,"Purple"
2,False,19.8,"Cucumber"
3,False,-0.5,"A string with a comma, because it has one"
4,True,2,"Nope"
5,True,4.0,"Tuesday"
6,False,1,"Failure"
Run Code Online (Sandbox Code Playgroud)

file2.csv

id,attr4,attr5,attr6
2,"python",500000.12,False
5,"program",3,True
3,"Another string",-5,False
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的代码:

import csv
from collections import OrderedDict

with open('file2.csv','r') as f2:
    reader = csv.reader(f2)
    fields2 = next(reader,None) # Skip headers
    dict2 = {row[0]: row[1:] for row in reader}

with open('file1.csv','r') as f1:
    reader = csv.reader(f1)
    fields1 = next(reader,None) # Skip headers
    dict1 = OrderedDict((row[0], row[1:]) for row in reader)

result = OrderedDict()
for d in (dict1, dict2): …
Run Code Online (Sandbox Code Playgroud)

python csv merge

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

Python中的微秒准确时间戳?

在将Python日期时间转换为时间戳时,有没有办法保持微秒精度?

>>> import datetime
>>> d1 = datetime.datetime(2013,7,31,9,13,8,829)
>>> import time
>>> d1_ts = time.mktime(d1.timetuple())
>>> d1
datetime.datetime(2013, 7, 31, 9, 13, 8, 829)
>>> d1_ts
1375279988.0
>>> d1.fromtimestamp(d1_ts)
datetime.datetime(2013, 7, 31, 9, 13, 8)
Run Code Online (Sandbox Code Playgroud)

.829在转换时输了.这是非常重要的,因为我有一个开始和结束时间戳,我需要以设定的间隔(使用亚秒级)逐步完成,以从一些传感器收集数据.

最终它将用于类似于此的函数:

from scipy import arange
sample_time = 0.02
for i in arange(d1_ts, d2_ts, sample_time):
    # do stuff
Run Code Online (Sandbox Code Playgroud)

如果sample_time这么小,那么mircoseconds很重要.

python timestamp

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

Xcode6:有没有简单的方法来复制大小类之间的约束?

我在wAny hAny size class中设置了约束,并且它适用于iPhone和iPad模拟器.

wAny hAny

然后我切换到wAny hCompact size class并进行了一些更改

wAny hCompact

它在iPhone横向模式下看起来很不错,但在iPad上没有任何改变,因为iPad是wRegular hRegular.我尝试将这些约束应用于wRegular hAny size class,但找不到快速的方法.再次手动修改所有约束是没有意义的.我发现如果我在Inspector面板中双击约束,则可以选择将约束安装到其他大小的类.但这仅适用于单一约束......

检查员

那么,是否可以将所有约束从一个大小类应用到另一个大小类?

class autolayout xcode6 ios8

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

在python中只加入带空格的行

我有以下数据..你可以在开头看到两行之间的空格,而在其他一些行之间没有空格:

Report Area

Total Population

Total Land Area
(Square Miles)

Population Density 
(Per Square Mile)


Report Area 37,325,068 155,738.02 239.67 
Alameda County, CA 1,515,136 738.82 2,050.75 
Alpine County, CA 1,197 738.13 1.62 
Amador County, CA 37,764 594.43 63.53 
Butte County, CA 220,101 1,636.03 134.53 
Calaveras County, CA 45,507 1,019.74 44.63 
Colusa County, CA 21,329 1,150.43 18.54 
Run Code Online (Sandbox Code Playgroud)

我需要最终输出:

Report Area  Total Population  Total Land Area(Square Miles)  Population Density(Per Square Mile)

Report Area 37,325,068 155,738.02 239.67 
Alameda County, CA 1,515,136 738.82 2,050.75 …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

如何通知PyCharm自定义模块的位置?

我有一个工作中的应用程序,其设置具有以下结构.

/project_root
    /applications
        /app1
            __init__.py
        /app2
            __init__.py
        ...
        /appN
    /pkg
        /database
            __init__.py
        /toolbox
            __init__.py
        ...
        __init__.py
    __init__.py
    main_framework.py
Run Code Online (Sandbox Code Playgroud)

我正在调查使用PyCharm(社区版),而不是Eclipse的PyDev工具.在__init__.pyapp1我看起来像这样的一个import语句:

import pkg.database
Run Code Online (Sandbox Code Playgroud)

PyCharm通过no module named pkg消息抱怨导入.

PyCharm错误 (点击查看大图)

但是,由于框架的构建方式,系统运行良好.每个人都appN知道pkg目录.如何告知PyCharm我在pkg目录中有自定义构建的模块,以便这些警告停止?

我正在测试PyCharm 4.0.3社区版.

我尝试了几件事,感谢下面的评论,但没有帮助:

  • 在"项目结构"对话框中,project_root被列为对话框右侧"内容根"下的唯一目录.我已经添加了pkg目录,以便它也被列出.这没有效果.
  • 在问题的初始版本中,我__init__.pypkg显示结构时错过了.这个文件确实存在.

python pycharm

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

如何为Arrayadapter添加自定义布局?

我正在尝试ListView使用自定义布局创建.listView应该看起来像item.xml下面发布的每个项目.

在代码中,我用过

adapter = new ArrayAdapter<T>(getApplicationContext(), R.layout.listi_tems_layout, topicsList);
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为ArrayAdapter<T>接受第二个参数的构造函数int就像

android.R.layout.simple_list_item_1

,在我的情况下,它是自定义布局

R.layout.listi_tems_layout
Run Code Online (Sandbox Code Playgroud)

我应该使用哪个适配器或如何解决这个问题.谢谢

项目:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="3">

<TextView 
    android:id="@+id/tvlist_topic"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"/>
<ImageView 
    android:id="@+id/ivList_delete"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:src="@drawable/delete_icon"
    android:contentDescription="icon to delete item from the Listview"
    android:layout_weight="1"/>
<CheckBox 
    android:id="@+id/cbList_hook"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:checked="false"
    android:layout_weight="1"/>
Run Code Online (Sandbox Code Playgroud)

主要布局:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
....
....
....

<ListView 
    android:id="@+id/lvEco_topics"
    android:layout_width="match_parent"
    android:layout_height="470dp"
    android:layout_below="@id/tvEco_topic"
    android:layout_marginTop="30dp"
    android:scrollbars="vertical"
    android:divider="@android:drawable/alert_light_frame"></ListView>
<Button …
Run Code Online (Sandbox Code Playgroud)

android listview android-arrayadapter android-layout

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

使用 Python 从 Markdown 中提取 URL 和锚文本

我正在尝试从 Markdown 中提取锚文本和关联的 URL。我见过这个问题。不幸的是,答案似乎并没有完全回答我想要的。

在 Markdown 中,插入链接有两种方式:

示例 1:

[anchor text](http://my.url)
Run Code Online (Sandbox Code Playgroud)

示例 2:

[anchor text][2]

   [1]: http://my.url
Run Code Online (Sandbox Code Playgroud)

我的脚本看起来像这样(请注意,我使用的是regex,而不是 re):

import regex
body_markdown = "This is an [inline link](http://google.com). This is a [non inline link][4]\r\n\r\n  [1]: http://yahoo.com"

rex = """(?|(?<txt>(?<url>(?:ht|f)tps?://\S+(?<=\P{P})))|\(([^)]+)\)\[(\g<url>)\])"""
pattern = regex.compile(rex)
matches = regex.findall(pattern, body_markdown, overlapped=True)
for m in matches:
    print m
Run Code Online (Sandbox Code Playgroud)

这会产生输出:

('http://google.com', 'http://google.com')
('http://yahoo.com', 'http://yahoo.com')
Run Code Online (Sandbox Code Playgroud)

我的预期输出是:

('inline link', 'http://google.com')
('non inline link', 'http://yahoo.com')
Run Code Online (Sandbox Code Playgroud)

如何从 Markdown 正确捕获锚文本?

python regex markdown

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

在自定义类对象列表上使用 __contains__

我有一个简单的类定义如下:

class User(object):
    def __init__(self, id=None, name=None):
        self.id = id
        self.name = name

    def __contains__(self, item):
        return item == self.id
Run Code Online (Sandbox Code Playgroud)

使用此类,我可以对该类的单个实例进行简单检查,如下所示:

>>> user1 = User(1, 'name_1')
>>> 1 in user1
True
>>> 2 in user1
False
Run Code Online (Sandbox Code Playgroud)

这按预期工作。

我如何检查一个值是否在对象列表中User?它似乎总是返回 False。

例子:

from random import randint
from pprint import pprint
users = [User(x, 'name_{}'.format(x)) for x in xrange(5)]
pprint(users, indent=4)

for x in xrange(5):
    i = randint(2,6) 
    if i in users:
        print("User already exists: {}".format(i))
    else:
        print("{} is not in …
Run Code Online (Sandbox Code Playgroud)

python

6
推荐指数
3
解决办法
7033
查看次数

Python Pandas,套用功能

我正在尝试使用apply来避免iterrows()函数中的迭代器:

但是该pandas方法的文档很少,除了.apply(sq.rt)文档中的the脚之外,我找不到如何使用它的示例。没有关于如何使用参数等的示例。

无论如何,这是我尝试做的一个玩具示例。

以我的理解,它apply实际上与相同iterrows(),即进行迭代(如果axis = 0,则在行上进行迭代)。在每次迭代x中,函数的输入应在行上进行迭代。但是,我不断收到的错误消息证明了这一假设。

grid = np.random.rand(5,2)
df = pd.DataFrame(grid)

def multiply(x):
    x[3]=x[0]*x[1]

df = df.apply(multiply, axis=0)
Run Code Online (Sandbox Code Playgroud)

上面的示例返回一个空的df。谁能说明我的误解?

python pandas

6
推荐指数
3
解决办法
2174
查看次数