Python: Как определить, содержит ли строка кортеж? - PullRequest
1 голос
/ 25 марта 2011

Мне нужен чистый способ определить, является ли строка действительно кортежем, например:

'(123,456)' -> True

'hello world' -> False

Я могу придумать два способа сделать это:

  1. регулярное выражение
  2. вызвать eval и перехватить / игнорировать SyntaxError

Мне не нравится второй вариант.Я в порядке с первым вариантом, но просто хотел узнать, есть ли лучший способ сделать это.

Спасибо.

Ответы [ 2 ]

7 голосов
/ 25 марта 2011
def represents_tuple(s):
    try: return type(ast.literal_eval(s)) == tuple
    except SyntaxError: return False
    except ValueError: return False
0 голосов
/ 25 марта 2011

Если кортеж внутри строки может иметь только простые числа, используйте регулярное выражение.Если члены кортежа могут быть сколь угодно сложными (например, вложенные списки), используйте eval.

...