Read File With Floats Separated by Commas C

NCL Abode> Application examples> File IO || Information files for some examples

Example pages containing: tips | resource | functions/procedures

NCL: Reading CSV (comma-separated values) files

CSV files are ASCII files whose values are separated past commas or other separators (semicolons, spaces, etc).

One way to read these files is using a combination of these functions:

  • asciiread
  • str_get_field, str_sub_str,
  • str_match_ic_regex, str_match_ic_regex, str_match_ind_regex, str_ind_match_ic_regex
  • tointeger, tofloat, todouble

Yous can become away with only using asciiread if you have a file of all numbers, and no mix of numbers and characters in any ane field.

For examples of reading/writing other types of ASCII files, see:

  • Writing CSV files
  • Writing ASCII information
  • Reading ASCII information

Sometimes in that location are multiple CSV files. Rather that looping over many files, it may exist advantageous to create 1 CSV file contaning all the data. This is readily achieved via the unix/linux cat control:

              cat            file01.csv file02.cvs .... >! FILE.csv      or            true cat            file*.csv .... >! FILE.csv          

The '>!' are the *nix redirect operator ( > ) and the overwrite operator ( ! ).

csv_1.ncl: Shows how to read a simple CSV file (example1.csv) that contains all integers.

asciiread is used to read the table as strings get-go then we tin can get the number of rows and columns. The values are then converted to integers using tointeger.

csv_2.ncl: Shows how to read a CSV file (example2.csv) that contains a mix of strings, integers, and fields.

asciiread is used to read the tabular array as strings and so str_get_field is used to read the desired fields. At that place's a mix of integer and float fields, and so tointeger and tofloat are used to convert from strings to numeric values.

csv_3.ncl: Shows how to read a CSV file (example3.csv) that contains fields that are all enclosed in double quotes.

asciiread is used to read the table equally strings, str_get_field is used to read the desired fields, and str_sub_str is used to remove all the double quotes.

csv_5.ncl: CSV files with bare cells are very common in "the real world". The function str_split_csv makes it easy to correctly read CSV files with empty fields as missing values. Notation: The tofloat returns an _Fillvalue=9.96921e+36. The script manually changes this to a 'nicer' _FillValue.

The input file, test-with-missing.csv, contains:

              168.0 ,157.1  165.5 ,145.8  164.0 ,163.3  169.7 ,169.vii  182.8 ,168.3  158.2 ,170.5  155.8 , 168.8 , 176.0 , 211.5 ,200.5  214.5 ,211.6  216.seven ,195.seven  219.0 ,193.7  227.five ,147.5  243.iii ,107.7  146.8 ,72.8          

The output would look like:

              (0)	168   157.ane (1)	165.5   145.8 (2)	164   163.three (3)	169.7   169.7 (iv)	182.8   168.3 (5)	158.2   170.5 (6)	155.8            -9999            (7)	168.8            -9999            (8)	176            -9999            (ix)	211.5   200.v (10)	214.five   211.vi (xi)	216.seven   195.vii (12)	219   193.7 (13)	227.5   147.5 (fourteen)	243.3   107.seven (15)	146.8   72.eight          

csv_6.ncl: Shows how to read a CSV file (479615.NorthDakota.csv) and extract all strings with a user specified string using str_match_ic_regex . Write the selected data to an ascii file via asciiwrite.

The original lawmaking was posted by Karin Meier-Fleischer (DKRZ) in response to an ncl-talk question.

csv_7.ncl: Read the CSV files (479615.NorthDakota.csv) and (479615.latlon.csv) and extract all strings with a user specified date ('yyyymm') string using str_match_ic_regex . The second ascii file is read for the breadth and longitudes of the locations. Write the selected data to an ascii file via asciiwrite.

Plot the random stations on a map for yyyymm. This csv file merely has 10 stations with data. Hence, the graphics are a bit crude.

csv_9.ncl: Shows how to read a CSV file (tAL.csv) which contains daily information from 14 stations concatenated together. A sample:

              "StationID","Year","Month","Day","Julian Day","Precip","Lat","Long"            11084,1950,1,1,2433284.195625,0,31.0581,-87.0547       <=== initial station ID      .....     11084,2011,12,31,2455928.79375,0,31.0581,-87.0547            12813,1950,1,1,2433284.195625,0,30.5467,-87.8808       <=== new station ID      .....     12813,2011,12,31,2455928.79375,0.0508,30.5467,-87.8808            13160,1950,i,1,2433284.195625,0,32.8347,-88.1342       <=== new station ID      .....          

readAsciiTable is used to input the data. NCL'southward ind office is used to select information blocks associated with each station. For demonstration, a simple procedure (could be a function) is used to summate a few simple statistcs.

ascii_delim_new.ncl: Shows how to read a CSV file (asc5.txt) that contains header information, and utilize this data to write the data to a NetCDF file.

The script is rather lengthy because it does some error checking of types.

In order to write fields to a netCDF file, the netCDF field (variable) names cannot contain any tabs or spaces. Hence this script removes white spaces from the commencement and stop of whatever field names and converts other white infinite to underscores ('_'). String or character values for the fields themselves are not modified.

If you want to use this script for your ain purposes, y'all will need to modify the script to indicate i) the input ASCII file proper noun, two) the number of fields, 3) the delimiter, 4) the type of each field, and 5) whether the field contains missing values.

To modify either 1 for your own data file, showtime search for the lines:

;============================================================ ; Main code ;============================================================          

The lines you lot need to alter follow shortly:

            filename  = "asc5.txt"                ; ASCII file to read.   nfields   = 6                         ; # of fields   delimiter = ","                       ; field delimiter   var_types      = new(nfields,string)   var_msg        = new(nfields,string)   var_strlens    = new(nfields,integer)   ; var to hold string lengths,                                           ; just in case.   .   .   .   var_msg        = ""              ; Default to no missing   var_msg(three)     = "-999"          ; Corresponds to field #4   var_types      = "integer"       ; Default to integer   var_types(1:2) = "float"         ; Second and 3rd fields   var_types(4)   = "grapheme"     ; Corresponds to field #5          

Modify "var_types" to whatever the types of your fields are, and "var_msg" to what the missing value should be (an empty cord indicates no missing value).

The higher up code is defaulting all variable types to "integer", and and then changing the 2d and 3rd fields to type "bladder" and the fifth field to type "character" (which in this case is being used as a character array). The merely field that will contain a missing value is the fourth field.

The commanded variable types are "integer", "float", "double", "string", or "character". Note that if you read in a variable equally a string, information technology won't get written to the netCDF file considering only character arrays tin can be written to a netCDF file.

whitemanuntes1960.blogspot.com

Source: https://www.ncl.ucar.edu/Applications/read_csv.shtml

Belum ada Komentar untuk "Read File With Floats Separated by Commas C"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel