小编Mic*_*ter的帖子

使用Python正则表达式在一个模式中剪切

目标:我正在尝试在Python RegEx中执行切换,其中split不能完全按照我的意愿执行.我需要在一个模式中剪切,但在角色之间.

我在找什么:

我需要在字符串中识别下面的模式,并将字符串拆分到管道的位置.管道实际上不在字符串中,它只显示我要分割的位置.

图案: CDE|FG

串: ABCDEFGHIJKLMNOCDEFGZYPE

结果: ['ABCDE', 'FGHIJKLMNOCDE', 'FGZYPE']

我尝试过的:

我似乎使用带括号的split是接近的,但是它并没有像我需要的那样将搜索模式保持在结果上.

re.split('CDE()FG', 'ABCDEFGHIJKLMNOCDEFGZYPE')

给人,

['AB', 'HIJKLMNO', 'ZYPE']

当我真的需要的时候,

['ABCDE', 'FGHIJKLMNOCDE', 'FGZYPE']

动机:

使用RegEx进行练习,并想看看我是否可以使用RegEx制作一个脚本来预测使用特定蛋白酶消化蛋白质的片段.

python regex string split protein-database

12
推荐指数
2
解决办法
3158
查看次数

Pythonic方法以适当的单位返回值

目标:从调用者请求的单位(或任何微不足道的修改)中的函数返回一个值.

背景:

我在Raspberry Pi 3上运行Python 2.7,并使用该函数distance()来获取旋转编码器已转动的距离.我需要不同单位的距离,具体取决于调用函数的位置.那怎么说,这应该是pythonically(即简短,易于维护).

第一次尝试:

我的第一次尝试是在函数中使用一个单位,并有一个长elif树来选择正确的单位返回.

def distance(units='m'):
    my_distance = read_encoder()

    if units == 'm':
        return my_distance * 1.000
    elif units == 'km':
        return my_distance / 1000.
    elif units == 'cm':
        return my_distance * 10.00
    elif units == 'yd':
        return my_distance * 1.094
    else:
        return -1
Run Code Online (Sandbox Code Playgroud)

这种方法的好处在于它有一种识别不可用单元的方法.

第二次尝试:

我的第二次尝试是创建一个包含各种字典的字典multipliers.

def distance(units='m'):
    multiplier = {
        'm': 1.000,
        'km': 0.001,
        'cm': 10.00
        'yd': 1.094
    }

    try:
        return read_encoder() * mulitplier[units]
    except …
Run Code Online (Sandbox Code Playgroud)

python design-patterns units-of-measurement python-2.7

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

pyserial中Serial.available()的等价物是什么?

当我试图在Arduino上读取多行串行数据时,我使用以下习语:

String message = "";
while (Serial.available()){
    message = message + serial.read()
}
Run Code Online (Sandbox Code Playgroud)

在Arduino C中,Serial.available()返回可从串行缓冲区读取的字节数(参见文档).python中的等价物是Serial.available()什么?

例如,如果我需要读取多行串行数据,我希望使用以下代码:

import serial
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=0.050)
...
while ser.available():
    print ser.readline()
Run Code Online (Sandbox Code Playgroud)

python serial-port

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

关闭日程表库中的日志记录

目标:防止schedule每次运行时记录.

背景:

我在python项目中使用loggingschedule库.

我的日志文件包含有关Raspberry Pi运行的仪器的物理状态的信息,并且每10秒更新一次.

我使用该schedule库来安排定期日志.

是我找到的有限文档schedule.

问题:

schedule库记录这一说法,每一次它运行的作业.

2016-06-29 09:01:51,022 INFO: Running job every 10 seconds do update_log() (Last run...
Run Code Online (Sandbox Code Playgroud)

schedule调用的函数是update_log()一个函数,它计算每十秒运行的日志中包含的变量并记录它们(例如下面的例子).

2016-06-29 09:01:51,022 INFO: Dist: 12.3 m Rate: 23.8 cm/s
Run Code Online (Sandbox Code Playgroud)

因为它schedule正在生成它自己的(相当无用的)日志行,所以它使我实际上尝试的日志记录非常难以阅读.

目标:

防止schedule记录第一个语句.

python logging scheduler python-2.7

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

Excel VBA中的运算符重载

我想做的是:

我想在Excel中使用运算符重载来对自定义数据类型运行自定义函数。例如,在计算公式时,当计算涉及到我的一种自定义数据类型时,我希望Excel运行函数而不是“ +”运算符。

为什么要这样做:

在分析化学中,每个数字都有不确定性,并写成:

13.56(±0.02)毫米

我想创建一个自定义数据类型,以将数量的大小和不确定性放在同一单元格中。

另外,我想实现运算符重载,所以当我写

=A1+A2
Run Code Online (Sandbox Code Playgroud)

并且A1或A2包含不确定性类型数字,我的自定义函数将代替默认的“ +”运算符运行以计算不确定性。

这将使我的电子表格更加整洁,因为目前,我必须编写如下语句

=ADD_UNC(A1, A2)
Run Code Online (Sandbox Code Playgroud)

对于非常简单的方程式来说,这是很容易找到的,但是当我尝试进行的运算甚至微不足道时,就会变得很痛苦。

=MULT_UNC(A3, ADD_UNC(MULT_UNC(A5, A1, A2), A3)

vs.

=A3*((A1*A2)+A3)
Run Code Online (Sandbox Code Playgroud)

为什么我认为这是可能的:

我知道在真正的,成熟的编程语言(例如C#)中,运算符重载非常普遍且易于执行。

谢谢您的帮助,

麦可

excel vba operator-overloading uncertainty

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

Python try-except块的DRY方法?

目标:我有几行代码,每行都能产生相同类型的错误,并保证同样的响应.如何使用try-except块防止"不要重复"问题.

背景:

我使用ReGex从文本文件中抓取格式不佳的数据,并将其输入到自定义对象的字段中.代码工作得很好,除非字段留空,在这种情况下它会抛出错误.

我在try-except块中处理此错误.如果出错,请在对象的字段中插入一个空白(即'').

问题是它变得易于阅读,很好,Python代码变成了一堆乱七八糟的块,每个块都做同样的事情.这是一个'不要重复自己'(又名DRY)违规行为.

代码:

之前:

sample.thickness = find_field('Thickness', sample_datum)[0]
sample.max_tension = find_field('Maximum Load', sample_datum)[0]
sample.max_length = find_field('Maximum Extension', sample_datum)[0]
sample.test_type = sample_test
Run Code Online (Sandbox Code Playgroud)

后:

try:
    sample.thickness = find_field('Thickness', sample_datum)[0]
except:
    sample.thickness = ''

try:
    sample.max_tension = find_field('Maximum Load', sample_datum)[0]
except:
    sample.max_tension = ''

try:
    sample.max_length = find_field('Maximum Extension', sample_datum)[0]
except: 
    sample.max_length = ''

try:    
    sample.test_type = sample_test
except:
    sample.test_type = ''
Run Code Online (Sandbox Code Playgroud)

我需要的:

是否有一些Pythonic方式来写这个?如果在任何这些行上存在索引超出范围的错误(表示该字段为空,并且ReGex未能返回任何内容),我可以说一些块,在示例字段中插入一个空白.

python python-2.7 try-except

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

如果给定列中的值不包含在列表中,则删除 pandas 数据框行

我有一个名为 pandas 数据框df,其中包含几列和一df['MY STATE']列。我的目标是从数据框中删除不包含美国各州的所有行。我想通过将单元格中的值与包含所有状态缩写的 pandas 系列进行比较来做到这一点。我见过人们使用类似以下内容来清理数据框:

df = df[df['COST'] <= 0]
Run Code Online (Sandbox Code Playgroud)

但像我需要的东西(如下)不起作用

df = df[df['MY STATE'] not in states['Abbreviation'].values]
Run Code Online (Sandbox Code Playgroud)

有没有办法简单地做到这一点?

我读过df.query()可以用来做这样的事情,但我还没有找到一个例子,并且还读过df.query()当列名中有空格时不能使用。

谢谢你,

迈克尔

dataframe python-2.7 pandas data-cleaning

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

"没有"比较没有按预期工作

not in在使用Python 2.7中的比较运算符时遇到问题.我有一个美国州缩写列表,我想检查给定的缩写是否不在该列表中,所以我使用:

'IL' not in states['Abbreviation']
Run Code Online (Sandbox Code Playgroud)

没想到,我得到了一个真实; 但是,当我做以下事情时,我也得到了一个真实的.

'IL' == states['Abbreviation'][13]
Run Code Online (Sandbox Code Playgroud)

'IL'是缩写列表中的第14项,当我使用时,==我可以证明它在列表中; 但是,当我使用not in比较时,它没有在列表中看到它?是什么赋予了?

我对python有点新意,所以希望答案不是太尴尬.

谢谢,

迈克尔

编辑:是的,在发布之前我尽力'谷歌'回答,但在谷歌搜索"不在"的条款是徒劳的努力,我上面描述的行为似乎与比较的方式不一致据说在文件中工作.

EDIT2:列表

in[89]: states['Abbreviation']

out[89]:

0     AL
1     AK
2     AZ
3     AR
4     CA
5     CO
6     CT
7     DE
8     DC
9     FL
10    GA
11    HI
12    ID
13    IL
14    IN
15    IA
16    KS
17    KY
18    LA
19    ME
20    MT
21    NE
22    NV
23    NH
24    NJ …
Run Code Online (Sandbox Code Playgroud)

python string-comparison python-2.7 pandas

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