Does Rapidminer support 'RSPLIT'?

Chaewon
Chaewon New Altair Community Member
edited November 2024 in Community Q&A
Does Rapidminer support 'RSPLIT'? I mean split delimited text from right side.
For example,
string = "tic-tac-toe"print(string.rsplit('-', 1))
['tic-tac', 'toe']
Tagged:

Best Answer

  • Chaewon
    Chaewon New Altair Community Member
    Answer ✓
    Thank you so much for your answer. Balazs. It works perfectly.
    Happy new year.

Answers

  • BalazsBaranyRM
    BalazsBaranyRM New Altair Community Member
    Hi!

    You can achieve this easily with a regular expression replacement.

    In Generate Attributes, you can use such a function:
    replaceAll(string, "(.+)-(.+)", "$1")
    $1 refers to the first match, $2 to the second one. Regular expression matches are "greedy", so the first one consumes as much of the string as it can, until the dash, and puts the rest into the second match.

    Here's an example process:
    <?xml version="1.0" encoding="UTF-8"?><process version="9.10.011">
      <context>
        <input/>
        <output/>
        <macros/>
      </context>
      <operator activated="true" class="process" compatibility="9.10.011" expanded="true" name="Process">
        <parameter key="logverbosity" value="init"/>
        <parameter key="random_seed" value="-1"/>
        <parameter key="send_mail" value="never"/>
        <parameter key="notification_email" value=""/>
        <parameter key="process_duration_for_mail" value="30"/>
        <parameter key="encoding" value="SYSTEM"/>
        <process expanded="true">
          <operator activated="true" class="utility:create_exampleset" compatibility="9.10.011" expanded="true" height="68" name="Create ExampleSet" width="90" x="112" y="34">
            <parameter key="generator_type" value="comma separated text"/>
            <parameter key="number_of_examples" value="100"/>
            <parameter key="use_stepsize" value="false"/>
            <list key="function_descriptions"/>
            <parameter key="add_id_attribute" value="false"/>
            <list key="numeric_series_configuration"/>
            <list key="date_series_configuration"/>
            <list key="date_series_configuration (interval)"/>
            <parameter key="date_format" value="yyyy-MM-dd HH:mm:ss"/>
            <parameter key="time_zone" value="SYSTEM"/>
            <parameter key="input_csv_text" value="string&#10;&quot;tic-tac-toe&quot;"/>
            <parameter key="column_separator" value=","/>
            <parameter key="parse_all_as_nominal" value="false"/>
            <parameter key="decimal_point_character" value="."/>
            <parameter key="trim_attribute_names" value="true"/>
          </operator>
          <operator activated="true" class="generate_attributes" compatibility="9.10.011" expanded="true" height="82" name="Generate Attributes" width="90" x="246" y="34">
            <list key="function_descriptions">
              <parameter key="part1" value="replaceAll(string, &quot;(.+)-(.+)&quot;, &quot;$1&quot;)"/>
              <parameter key="part2" value="replaceAll(string, &quot;(.+)-(.+)&quot;, &quot;$2&quot;)"/>
            </list>
            <parameter key="keep_all" value="true"/>
          </operator>
          <connect from_op="Create ExampleSet" from_port="output" to_op="Generate Attributes" to_port="example set input"/>
          <connect from_op="Generate Attributes" from_port="example set output" to_port="result 1"/>
          <portSpacing port="source_input 1" spacing="0"/>
          <portSpacing port="sink_result 1" spacing="0"/>
          <portSpacing port="sink_result 2" spacing="0"/>
        </process>
      </operator>
    </process>


    Regards,
    Balázs


  • Chaewon
    Chaewon New Altair Community Member
    Answer ✓
    Thank you so much for your answer. Balazs. It works perfectly.
    Happy new year.