Импорт файла, разделённого запятыми, с запятыми внутри строковых значений
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | * Импорт файла, разделённого запятыми, с запятыми внутри строковых значений. * (Вопрос) Как можно импортировать в SPSS текстовый файл с запятыми в качестве разделителей, * если запятые встречаются внутри закавыченных текстовых значений?. * (Ответ) Автор: rlevesque@videotron.ca, размещён в SPSSX-L 03.11.2001. * Примеч.: в случае, если длина строки слишком велика, используйте команду FILE HANDLE. * Во-первых, прочтём данные построчно целиком в одну текстовую переменную. DATA LIST FIXED /str1 1-80 (A). BEGIN DATA 1,"6159905","XYZ Agency, City Middle School",0,,,0,1 2,"4444","ABC Company,, My City,",1,2,3,4,5 END DATA. LIST. * Заменим запятые, разделяющие поля (переменные) на "~" (или какой-либо другой символ, ещё отсутствующий в исходных данных). * Запятые внутри закавыченных значений оставляем нетронутыми. COMPUTE #inside=-1. LOOP cnt=1 TO 80. IF SUBSTR(str1,cnt,1)="," & #inside=-1 SUBSTR(str1,cnt,1)="~". IF SUBSTR(str1, cnt,1)='"' #inside=#inside*-1. END LOOP. * Запишем результат в новый текстовый файл, где поля разделяются символами "~". WRITE OUTFILE='c:\\temp\\data.txt' /str1. EXECUTE. * А теперь прочтём из этого файла данные, указав корректный разделитель. NEW FILE. DATA LIST FILE='c:\\temp\\data.txt' LIST('~') / id(f8.2) nb(A10) addr(A50) var1(f8.2) var2(f8.2) var3(f8.2) var4(f8.2) var5(f8.2). LIST. |
Related pages
...