`csv` does not round-trip for `complex` numbers
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 45/100
Piste de recherche
Commencez par reproduire les exemples Python csv signalés dans l’issue pour QUOTE_ALL et QUOTE_NONNUMERIC, puis examinez la documentation csv et les tests mentionnés dans l’issue. Déterminez le comportement attendu pour les nombres complexes, implémentez l’orientation convenue et ajoutez la documentation ou la couverture de tests correspondante afin que le comportement de round-tripping et de conversion soit explicite.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Reproduction depends on the quoting.
QUOTE_ALL
import csv
data = [1, 1j]
with open('example.csv', 'w') as f:
writer = csv.writer(f, quoting=csv.QUOTE_ALL)
writer.writerow(data)
with open('example.csv') as f:
contents = f.read()
print(contents) # 1,1j
reader = csv.reader(contents, quoting=csv.QUOTE_ALL)
print(list(reader)) # [['1'], ['', ''], ['1'], ['j'], []]
In this case, we don't have our data back, but at least it does not raise.
QUOTE_NONNUMERIC
Qouting docs:
No automatic data type conversion is performed unless the QUOTE_NONNUMERIC format option is specified (in which case unquoted fields are transformed into floats)
import csv
data = [1, 1j]
with open('example.csv', 'w') as f:
writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
writer.writerow(data)
with open('example.csv') as f:
contents = f.read()
print(contents) # 1,1j
reader = csv.reader(contents, quoting=csv.QUOTE_NONNUMERIC)
print(list(reader))
# Traceback (most recent call last):
# File "/Users/sobolev/Desktop/cpython/ex.py", line 11, in <module>
# print(list(reader))
# ^^^^^^^^^^^^
# ValueError: could not convert string to float: 'j'
In this case, it raises an error, while trying to convert 1j to float.
Current docs / tests
I cannot find any mentions of complex numbers in tests or docs for csv.
Solutions?
- We can say that it works as expected: with this strange
QUOTE_ALLformatting andQUOTE_NONNUMERICexception. Add a test case for it and forget about it - We can try to quote
complexas string: in this case it will be treated as"1j". I think it is much better, because it will allow users to convert this value tocomplexmanually - Forbid writting
complexnumbers. However, I don't think it is a path we should go
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 36k
- Merge moyen
- 1 j 9 h
- PR mergées (30 j)
- 558
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de python/cpython
-
docs pending
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
stdlib type-feature
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
stdlib type-feature
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
build type-bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
-
stdlib topic-email type-feature
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Toutes les issues de python/cpython
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
-
🐛 Bug 🔔 Pending processing
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
jumpserver/jumpserver#17584 ·