Вы можете использовать itertools.groupby
здесь для фильтрации по длине:
import itertools
someline = '"",,,,,,,,ce: appears to assume ,that\n'
# Group by length greater than 0
res = [(i, ','.join(x)) for i,x in itertools.groupby(someline.split(','), key=lambda x: len(x)>0)]
# [(True, '""'), (False, ',,,,,,'), (True, 'ce: appears to assume ,that\n')]
# Then you can just gather your results
results = []
for i, x in res:
if i is True:
results.append(x)
else:
results.extend(x.split(','))
results
# ['""', '', '', '', '', '', '', '', 'ce: appears to assume ,that\n']
Это позволяет вам не проверять определенное количество запятых, если оно не является фиксированным значением в строке.
Другой формат
Тем не менее, я думаю, что реальная проблема заключается в том, что запятые являются не только разделителями, но и элементами данных, что делает эту проблему несколько неоднозначной.В документах выглядит так, что вы можете указать другой формат вывода, например .tsv
, который будет разделяться на \t
и позволит избежать проблемы в целом:
tabula.convert_into("test.pdf", "output.tsv", output_format="tsv", pages='all')
Тогда ваши строки будут выглядеть так:
someline = '""\t\t\t\t\t\t\t\tce: appears to assume ,that\n'
# Much easier to handle
someline.split('\t')
# ['""', '', '', '', '', '', '', '', 'ce: appears to assume ,that\n']