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