拆分字母和数字以找出并在表格中指定值

时间:2012-01-17 15:21:53

标签: python split

我目前在Python中有一些代码,我从表中输入了值:

rules = {   "213" : ( 0.00019, 3.5, 0.00019, 3.5 ),
        "222" : ( 0.00019, 4.0, 0.00019, min( 4.0, 4.1E-8 * dm**3 - 4.1E-5 * dm**2 + 0.017 * dm + 1.35 ) ),
        "223" : ( 0.0003,  4.5, 0.0003,  4.5 ),
        "230" : ( 0.00017, 4.5, 0.00017, 3.3 ),
        "231" : ( 0.00027, 5.5, 0.00027, 5.1E-6 * dm**2 - 0.0057 * dm + 4.6 ),
        "232" : ( 0.00036, 6.0, 0.00036, 7.1E-6 * dm**2 - 0.007 * dm + 5.79 ),
        "239" : ( 0.00017, 4.5, 0.00017, 2.9 ),
        "240" : ( 0.00027, 6.5, 0.00027, 9.1E-6 * dm**2 - 0.01 * dm + 6.9 ),
        "241" : ( 0.00049, 7.0, 0.00049, 3.1E-5 * dm**2 - 0.032 * dm + 8.7 ) }
serialNumber = [ "name" ][ 0 : 3 ]
try:
    return rules[ serialNumber ]

列(括号中L-R的读数):F1ISO,F0ISO,F1COR,F0COR

我想做什么,输入'name'(名称是数字和字母的组合,总是以形式:11111A,例如,最后可以有两个字母)。

我希望能够将'name'分成字母和数字,但更重要的是我正在查看前3个数字和字母。使用前三个数字,我希望能够从上面的“表格”中读取,但所选择的值也取决于字母。

主要规则是:  如果字母等于V,则采用'ISO'值。  任何其他组合都采用'COR'值。

感谢任何能提供帮助的人。

2 个答案:

答案 0 :(得分:2)

这有助于了解如何从条目中获取这两部分

>>> name =  "11111A"
>>> ser = name[:3]     # first 3 characters
>>> code = name[3:]    # rest of chars after the third
>>> ser
'111'
>>> code
'11A'
>>>

或者也许:

  >>> code = name[-1]     # last character
  >>> code
  'A'

然后,以同样的方式:

>>> contents = rules[ser]
>>> if code == 'V':
...     print contents[:2]
... else:
...     print contents[2:]

答案 1 :(得分:0)

我认为这可以满足您的需求:

name = "21311A"
serialNumber = name[:3]   # get first 3 numbers
rule = rules.get(serialNumber)   # get rule based on serialNumber
column = [3,1][name[5] == 'V']   # pick column based on last letter 
column -= int(name[4])           # shift column based on preceding digit

print rule[x]