Вы можете сделать это как:
val df = sqlContext.emptyDataFrame
if( df.eq(sqlContext.emptyDataFrame) )
println("empty df ")
else
println("normal df")
Некоторые отличные решения, использующие stdlib
, вот чистая попытка Python:
Вы можете использовать регулярное выражение:
import re
s = "1+22-3*4/5"
re.split('(\W)', s)
['1', '+', '22', '-', '3', '*', '4', '/', '5']
Вы можете использовать itertools.groupby
с str.isdigit
в качестве ключевой функции:
from itertools import groupby
[''.join(g) for _, g in groupby(n, key=str.isdigit)]
Это возвращает:
['1', '+', '22', '-', '3', '*', '4', '/', '5']
Я предлагаю вам обработать символы строки по порядку (для ch в str) и либо (а) добавить их в свой список; или (б) накапливать их в число:
str = "1+22-3*4/5"
tokens = []
number = None
operators = "+-*/"
digits = "0123456789"
for ch in str:
if ch in operators:
if number is not None:
tokens.append(number)
tokens.append(ch)
continue
elif ch in digits:
if number is None:
number = ch
else:
number += ch
continue
else:
# what else could it be?
pass
# After loop, check for number at end
if number is not None:
tokens.append(number)