我的任务是构建一个应用程序,最终用户可以在其中使用自定义规则来评估返回的查询是否导致警告或警报(基于自己的阈值)。
我已经为用户构建了一种方法来模板化他们的逻辑。一个示例如下所示:
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) 我试图根据每个文件中的特定字段合并两个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日期时间转换为时间戳时,有没有办法保持微秒精度?
>>> 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很重要.
我在wAny hAny size class中设置了约束,并且它适用于iPhone和iPad模拟器.

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

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

那么,是否可以将所有约束从一个大小类应用到另一个大小类?
我有以下数据..你可以在开头看到两行之间的空格,而在其他一些行之间没有空格:
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) 我有一个工作中的应用程序,其设置具有以下结构.
/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__.py在app1我看起来像这样的一个import语句:
import pkg.database
Run Code Online (Sandbox Code Playgroud)
PyCharm通过no module named pkg消息抱怨导入.
但是,由于框架的构建方式,系统运行良好.每个人都appN知道pkg目录.如何告知PyCharm我在pkg目录中有自定义构建的模块,以便这些警告停止?
我正在测试PyCharm 4.0.3社区版.
我尝试了几件事,感谢下面的评论,但没有帮助:
pkg目录,以便它也被列出.这没有效果.__init__.py在pkg显示结构时错过了.这个文件确实存在.我正在尝试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) 我正在尝试从 Markdown 中提取锚文本和关联的 URL。我见过这个问题。不幸的是,答案似乎并没有完全回答我想要的。
在 Markdown 中,插入链接有两种方式:
[anchor text](http://my.url)
Run Code Online (Sandbox Code Playgroud)
[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 正确捕获锚文本?
我有一个简单的类定义如下:
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) 我正在尝试使用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。谁能说明我的误解?