Multiple ways to do this.
Pure FME:
- AttributeSplitter to split the values to a list.
-
ListExploder to create features from the list.
-
StatisticsCalculator to calculate the minimum value and the range.
-
Cloner to create a feature for each position in the range.
-
AttributeCreator to calculate the value for each feature using min value and copynum
-
Aggregator to merge all features and concatenate the string.
Python:
import fme
import fmeobjects
class FeatureProcessor(object):
def input(self, feature: fmeobjects.FMEFeature):
# Get the input from an attribute.
input_string = feature.getAttribute('input')
# Split the input string to get the start and end of the range.
start, end = map(int, input_string.split('-'))
# Generate the range and join with semicolons.
output_string = ';'.join(str(i) for i in range(start, end + 1))
# Write the result to an attribute.
feature.setAttribute('output',output_string)
self.pyoutput(feature)
Sample workspace attached.