BUG: since pandas==1.1.0 pd.read_json() fails for strings that look similar to fsspec_url · Issue #36271 · pandas-dev/pandas (original) (raw)
Input json string: [{"0":"this is a string ://"}]
URL? False
fsspec? True
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-f3bc94ba133f> in <module>
7 print('fsspec? {}'.format(str(pd.io.common.is_fsspec_url(input_json))))
8
----> 9 pd.read_json(input_json)
~/miniconda3/envs/eltest/lib/python3.7/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
197 else:
198 kwargs[new_arg_name] = new_arg_value
--> 199 return func(*args, **kwargs)
200
201 return cast(F, wrapper)
~/miniconda3/envs/eltest/lib/python3.7/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
294 )
295 warnings.warn(msg, FutureWarning, stacklevel=stacklevel)
--> 296 return func(*args, **kwargs)
297
298 return wrapper
~/miniconda3/envs/eltest/lib/python3.7/site-packages/pandas/io/json/_json.py in read_json(path_or_buf, orient, typ, dtype, convert_axes, convert_dates, keep_default_dates, numpy, precise_float, date_unit, encoding, lines, chunksize, compression, nrows)
592 compression = infer_compression(path_or_buf, compression)
593 filepath_or_buffer, _, compression, should_close = get_filepath_or_buffer(
--> 594 path_or_buf, encoding=encoding, compression=compression
595 )
596
~/miniconda3/envs/eltest/lib/python3.7/site-packages/pandas/io/common.py in get_filepath_or_buffer(filepath_or_buffer, encoding, compression, mode, storage_options)
201 if filepath_or_buffer.startswith("s3n://"):
202 filepath_or_buffer = filepath_or_buffer.replace("s3n://", "s3://")
--> 203 fsspec = import_optional_dependency("fsspec")
204
205 # If botocore is installed we fallback to reading with anon=True
~/miniconda3/envs/eltest/lib/python3.7/site-packages/pandas/compat/_optional.py in import_optional_dependency(name, extra, raise_on_missing, on_version)
108 except ImportError:
109 if raise_on_missing:
--> 110 raise ImportError(msg) from None
111 else:
112 return None
ImportError: Missing optional dependency 'fsspec'. Use pip or conda to install fsspec.
The method pd.read_json()
is widely used and accepts either a path or a json string. Since pandas==1.1.0 passing a string containing a json input is often interpreted as a fssspec_url and results in an error.
Input json string: [{"0":"this is a string ://"}]
URL? False
fsspec? False
0
0 this is a string ://