如何将以下scala代码转换为python

时间:2015-11-14 07:19:55

标签: python scala

这是Scala中的模式匹配开关案例,它基本上将选择器变量的不同数据类型与相应的case变量匹配,并对其进行一些操作

def valueToString(x: Any): String = x match {

        case d: BigDecimal =>
          /* do something here */

        case a: Array[Byte] =>
          new String(a, "UTF-8")

        case s: Seq[_] =>
          /*do something here */

        case m: Map[_,_] =>
         /*do something here */

        case d: Date =>
          /*do something here */

        case t: Timestamp =>
          /*do something here */

        case r: Row =>
        /*do something here */
       }

Python并不完全支持这种模式匹配。我知道Python中的切换器,但它需要正则表达式或变量的实际匹配。我如何在Python中实现上述功能

1 个答案:

答案 0 :(得分:1)

类型检查

使用isinstance方法检查通用输入的类型

import datetime

def value_to_string(input):

    # String
    if isinstance(input, basestring):
        return 'string'

    # BigDecimal
    if isinstance(input, int):
        return 'int'

    # Array
    if isinstance(input, list):
        return 'list'

    # Map
    if isinstance(input, dict):
        return 'dictionary'

    # Date
    if isinstance(input, datetime.date):
        return 'date'

    # ...

使用

print value_to_string('')
print value_to_string(1234)
print value_to_string([1,2,3])
print value_to_string({"id": 1})
print value_to_string(datetime.datetime.now())

输出

string
int
list
dictionary
date