equal
deleted
inserted
replaced
85 quotechar = quote |
85 quotechar = quote |
86 warnings.warn("[3.20] 'quote' kwarg is deprecated, use 'quotechar' instead") |
86 warnings.warn("[3.20] 'quote' kwarg is deprecated, use 'quotechar' instead") |
87 it = iter(csvmod.reader(stream, delimiter=delimiter, quotechar=quotechar)) |
87 it = iter(csvmod.reader(stream, delimiter=delimiter, quotechar=quotechar)) |
88 if not ignore_errors: |
88 if not ignore_errors: |
89 if skipfirst: |
89 if skipfirst: |
90 it.next() |
90 next(it) |
91 for row in it: |
91 for row in it: |
92 decoded = [item.decode(encoding) for item in row] |
92 decoded = [item.decode(encoding) for item in row] |
93 if not skip_empty or any(decoded): |
93 if not skip_empty or any(decoded): |
94 yield decoded |
94 yield decoded |
95 else: |
95 else: |
96 if skipfirst: |
96 if skipfirst: |
97 try: |
97 try: |
98 row = it.next() |
98 row = next(it) |
99 except csvmod.Error: |
99 except csvmod.Error: |
100 pass |
100 pass |
101 # Safe version, that can cope with error in CSV file |
101 # Safe version, that can cope with error in CSV file |
102 while True: |
102 while True: |
103 try: |
103 try: |
104 row = it.next() |
104 row = next(it) |
105 # End of CSV, break |
105 # End of CSV, break |
106 except StopIteration: |
106 except StopIteration: |
107 break |
107 break |
108 # Error in CSV, ignore line and continue |
108 # Error in CSV, ignore line and continue |
109 except csvmod.Error: |
109 except csvmod.Error: |