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.
See how to use JMP Live to centralize and share reports within groups. Webinar with Q&A April 4, 2pm ET.
Choose Language Hide Translation Bar
View Original Published Thread

Please help me remove carriage character in JSL

Dib-Dey
Level III

I have a jsl script which calls python file to identify a specific directory from anywhere. It is working fine but he result has a carriage character which is ruining everything. 

 

cur_dir = Substr( Get Default Directory(), 2, 999 );
cur_dir = Substitute( cur_dir, "/", "\" );
show(cur_dir);
_path_script = cur_dir || "find_home_directory.py";
show(_path_script);

home_dir = RunProgram(
					executable( "python" ),
					options( _path_script),
					readfunction( "text" )
				);
show(home_dir);

 

home_dir = "C:\dtemp
";

 

Anyone , can you please help me how to convert this string to remove the carriage character and looks like this?

home_dir = "C:\dtemp"

 

1 ACCEPTED SOLUTION

Accepted Solutions


Re: Please help me remove carriage character in JSL

@pmroz's solution is a good one! Here is a general reference to the common invisible characters that might appear in a string of characters. You can use the escape sequence to search.

View solution in original post

8 REPLIES 8
pmroz
Super User


Re: Please help me remove carriage character in JSL

cr = "
";
home_dir = "C:\dtemp
";
home_dir = substitute(home_dir, cr, "");
Dib-Dey
Level III


Re: Please help me remove carriage character in JSL

View more...

 

cur_dir = Substr( Get Default Directory(), 2, 999 );
cur_dir = Substitute( cur_dir, "/", "\" );
show(cur_dir);
_path_script = cur_dir || "find_home_directory.py";
show(_path_script);

home_dir = RunProgram(
					executable( "python" ),
					options( _path_script),
					readfunction( "text" )
				);
show(home_dir);
cr ="
";
home_dir = substitute(home_dir, cr, "");
show(home_dir);

Result is still the same..:(

 

home_dir = "C:\dekel_post_processing
";
home_dir = "C:\dekel_post_processing
";

Dib-Dey
Level III


Re: Please help me remove carriage character in JSL

Although it works if you just run this few lines individually.

 

cr = "
";
home_dir = "C:\dtemp
";
show(home_dir);
home_dir = substitute(home_dir, cr, "");
show(home_dir);

Result:

home_dir = "C:\dtemp
";
home_dir = "C:\dtemp";
txnelson
Super User


Re: Please help me remove carriage character in JSL

Here is how I would do it using the standard escape characters in JMP

names default to here(1);
cr = "\!r";
home_dir = "C:\dtemp
";
show(home_dir);
home_dir = substitute(home_dir, cr, "");
show(home_dir);

Which gave the reslts

home_dir = "C:\dtemp
";
home_dir = "C:\dtemp";
Jim


Re: Please help me remove carriage character in JSL

@pmroz's solution is a good one! Here is a general reference to the common invisible characters that might appear in a string of characters. You can use the escape sequence to search.

Dib-Dey
Level III


Re: Please help me remove carriage character in JSL

I tried it with "(\r)" as RegEx search but still getting the same issue.

 

cur_dir = Substr( Get Default Directory(), 2, 999 );
cur_dir = Substitute( cur_dir, "/", "\" );
show(cur_dir);
_path_script = cur_dir || "find_home_directory.py";
show(_path_script);

home_dir = RunProgram(
					executable( "python" ),
					options( _path_script),
					readfunction( "text" )
				);
show(home_dir);
cr = Regex(home_dir,"(\r)");
home_dir = substitute(home_dir, cr, "");
show(home_dir);

Result.

 

home_dir = "C:\tmp
";
home_dir = "C:\tmp
";

What I want:

home_dir = "C:\tmp"


Re: Please help me remove carriage character in JSL

Maybe this?

 

cur_dir = Substr( Get Default Directory(), 2 );
cur_dir = Convert File Path( cur_dir, Windows );
Show( cur_dir );
_path_script = cur_dir || "find_home_directory.py";
Show( _path_script );

home_dir = Run Program( executable( "python" ), options( _path_script ), readfunction( "text" ) );
Show( home_dir );

home_dir = Substitute( home_dir, "\r", "" );
Show( home_dir );
Dib-Dey
Level III


Re: Please help me remove carriage character in JSL

yup finally it worked. The trick is following:

 

suppose you have a file "example.jsl" and you want to have the absolute path. You should do following:

 

cur_dir = Substr( Get Default Directory(), 2 );
cur_dir = Convert File Path( cur_dir, Windows );
Show( cur_dir );
_path_script = cur_dir || "find_home_directory.py";
Show( _path_script );

home_dir = Run Program( executable( "python" ), options( _path_script ), readfunction( "text" ) );
Show( home_dir );

path_to_example_jsl = Substitute( home_dir, "\r", "example.jsl" );
Show( path_to_example_jsl );

The python file you call is simple:

import os
def find_home_dir():
	cur_dir = os.path.dirname(os.path.realpath(__file__))
	while True:
		if "file_which_defines_root" in os.listdir(cur_dir):
			break
		else:
			cur_dir = os.path.dirname(cur_dir)
	print(cur_dir.strip())

if __name__ == '__main__':
	find_home_dir()