Returns a dialect (or None) corresponding to the sample
(self, sample, delimiters=None)
| 239 | |
| 240 | |
| 241 | def sniff(self, sample, delimiters=None): |
| 242 | """ |
| 243 | Returns a dialect (or None) corresponding to the sample |
| 244 | """ |
| 245 | |
| 246 | quotechar, doublequote, delimiter, skipinitialspace = \ |
| 247 | self._guess_quote_and_delimiter(sample, delimiters) |
| 248 | if not delimiter: |
| 249 | delimiter, skipinitialspace = self._guess_delimiter(sample, |
| 250 | delimiters) |
| 251 | |
| 252 | if not delimiter: |
| 253 | raise Error("Could not determine delimiter") |
| 254 | |
| 255 | class dialect(Dialect): |
| 256 | _name = "sniffed" |
| 257 | lineterminator = '\r\n' |
| 258 | quoting = QUOTE_MINIMAL |
| 259 | # escapechar = '' |
| 260 | |
| 261 | dialect.doublequote = doublequote |
| 262 | dialect.delimiter = delimiter |
| 263 | # _csv.reader won't accept a quotechar of '' |
| 264 | dialect.quotechar = quotechar or '"' |
| 265 | dialect.skipinitialspace = skipinitialspace |
| 266 | |
| 267 | return dialect |
| 268 | |
| 269 | |
| 270 | def _guess_quote_and_delimiter(self, data, delimiters): |