目标:我正在尝试在Python RegEx中执行切换,其中split不能完全按照我的意愿执行.我需要在一个模式中剪切,但在角色之间.
我在找什么:
我需要在字符串中识别下面的模式,并将字符串拆分到管道的位置.管道实际上不在字符串中,它只显示我要分割的位置.
图案: CDE|FG
串: ABCDEFGHIJKLMNOCDEFGZYPE
结果: ['ABCDE', 'FGHIJKLMNOCDE', 'FGZYPE']
我尝试过的:
我似乎使用带括号的split是接近的,但是它并没有像我需要的那样将搜索模式保持在结果上.
re.split('CDE()FG', 'ABCDEFGHIJKLMNOCDEFGZYPE')
给人,
['AB', 'HIJKLMNO', 'ZYPE']
当我真的需要的时候,
['ABCDE', 'FGHIJKLMNOCDE', 'FGZYPE']
动机:
使用RegEx进行练习,并想看看我是否可以使用RegEx制作一个脚本来预测使用特定蛋白酶消化蛋白质的片段.
目标:从调用者请求的单位(或任何微不足道的修改)中的函数返回一个值.
背景:
我在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) 当我试图在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) 目标:防止schedule每次运行时记录.
背景:
我在python项目中使用logging和schedule库.
我的日志文件包含有关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记录第一个语句.
我想做的是:
我想在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#)中,运算符重载非常普遍且易于执行。
谢谢您的帮助,
麦可
目标:我有几行代码,每行都能产生相同类型的错误,并保证同样的响应.如何使用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未能返回任何内容),我可以说一些块,在示例字段中插入一个空白.
我有一个名为 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()当列名中有空格时不能使用。
谢谢你,
迈克尔
我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 ×6
python-2.7 ×5
pandas ×2
dataframe ×1
excel ×1
logging ×1
regex ×1
scheduler ×1
serial-port ×1
split ×1
string ×1
try-except ×1
uncertainty ×1
vba ×1