cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • See how to interactively organize and restructure data for analysis. Register for May 29 webinar, 2pm US ET.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
Dib-Dey
Level III

Please help me remove carriage character in JSL

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()

 

 

Recommended Articles