If these are free-text fields where users can enter "anything" and when downloading the data it doesn't create a clean .csv format then you need to try if you can define a character as delimiter that's highly unlikely to also get used by users in their free-text. Or if there are other formats like json available then consider using these.
Below code works for your sample data but there is a big chance that you've got other cases in your actual data that won't be covered.
%let path=%sysfunc(pathname(work));
data _null_;
file "&path.\have_data.txt" lrecl=10000;
put '"Turner, Alfred","2A"';
put '"Anandsinh Sindha","4C"';
put '"Arundhati , "tiwari"","1A"';
run;
data _null_;
file "&path.\need_data.txt" lrecl=10000;
infile "&path.\have_data.txt" lrecl=10000;
input;
/*_infile_=prxchange('s/(")([^"]*?)("")(,")/$3$2$1$4/oi',-1,trim(_infile_));*/
_infile_=prxchange('s/"([^"]*?)"","/$1","/oi',-1,trim(_infile_));
put _infile_;
run;
data work.want;
infile "&path.\need_data.txt" dlm=',' truncover dsd lrecl=10000;
input var1:$40. var2:$40.;
run;
proc print data=want;
run;
... View more