cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
Choose Language Hide Translation Bar
lala
Level VIII

Can implement this substitution with an operation with a regex?

For example, this file is a txt file.TAB spacing:
Column 2 contains, column 2 contains
The maximum number of rows is 5
Can you use regular substitution to replace rows with less than 5 such symbols to complete the cell with a total of 5 similar symbols?
Make up as shown in the figure.

2024-10-15_12-01-34.png

Thanks Experts!

13 REPLIES 13
jthi
Super User

Re: Can implement this substitution with an operation with a regular?

Names Default To Here(1);

str = "\[A	B	C
00001	744811604804487748	1
00002	744811604411447740~744811607410407768	1▲1
00003	744811607000017746~744811607407400440~744811607611467718~744811600601460016	1▲1▲1▲1
00004	744811606810447747	1
00005	744811606400167710~744811606610607767~744811608807400040~744811401407170047	1▲1▲1▲1
00006	744811607006017776~744811606014617747~744811600606400074	1▲1▲1
00007	744811607114067714~744811607406147747~744811607704147760~744811607710174146~744811600014600011	1▲1▲1▲1▲1
00008	744811604810187746~744811606706407717~744811606607400107	1▲1▲1
00009	744811608814480014~744811608704464148~744811401101140018~744811401607480040~744811401714140017	1▲1▲1▲1▲1
00010	744811606607177767~744811606707470064~744811608610440011~711741608004176007~744811401606180041~744811401704470014	1▲1▲1▲1▲1▲1
00011	744811607401167716~744811607408417748~711047607710460644~744811607711077714	1▲1▲1▲1
00012	460144607710400044~744811607711077716~744811400601440046~744811401104410044	1▲1▲1▲1
00013	744811607814617747~410144608807046447~744811608110140017~744811400807170010	1▲1▲1▲1
00014	744811607807117717~744811607806117747~744811608610400060~744811608804087740~744811400806070014	1▲1▲1▲1▲1
]\";

lines = Words(str, "\!N");
header = Remove From(lines, 1); // skip header

maxchar = 5;
res = Transform Each({line}, lines,
	row = Words(line, "\!t");
	char_to_add = maxchar - (Length(row[2]) - Length(Substitute(row[2], "~", "")));
	
	item1 = row[1];
	item2 = row[2] || Repeat("~", char_to_add);
	item3 = row[3] || Repeat("▲", char_to_add);
	
	new_line = Eval Insert("^item1^\!t^item2^\!t^item3^");	
);

Insert Into(res, header, 1);

dt = Open(Char to blob(Concat items(res, "\!N")), "text");

jthi_0-1729242162433.png

Scripting Index and Scripting Guide should cover everything you need to do something like this (outside of the last line).

-Jarmo
lala
Level VIII

Re: Can implement this substitution with an operation with a regular?

Thanks Experts!

 

python's

        for i in range(4, len(columns)):
            col = columns[i]
jthi
Super User

Re: Can implement this substitution with an operation with a regular?

Use For Each() and Index() in JSL

 

Edit:

Or just use normal For loop, just start loop from 4 and make it non-exclusive to lenght

-Jarmo
lala
Level VIII

Re: Can implement this substitution with an operation with a regular?

Thanks Experts!
Transposed is equivalent.