J'ai un fichier texte qui contient ces quelques mots et un nombre écrit avec un point. Par exemple
bonjour!
54.123
Maintenant, je veux seulement que le nombre 54.123 soit extrait et converti afin que le résultat soit 54123
Le code que j'ai essayé est
< pre> XXXMais cela renvoie l'erreur: ValueError: littéral invalide pour int () avec base 10: '54 .123 '
Est-ce que quelqu'un connaît une solution pour cela?
3 Réponses :
Cela peut aider. J'obtiens maintenant des nombres à partir du fichier. Je suppose que vous essayiez d'utiliser la division à la place de la bande
import re
exp = re.compile(r'[0-9]')
my_list = []
with open('file.txt') as f:
lines = f.readlines()
for line in lines:
for numbers in line.split():
if re.match(exp, numbers):
my_list.append(numbers)
#convert to a string
listToStr = ' '.join([str(elem) for elem in my_list])
print(listToStr)
Vous pouvez vérifier si une ligne donnée est une chaîne représentant un nombre en utilisant la fonction isdigit () .
D'après ce que je peux dire, vous devez simplement vérifier s'il y a un nombre car isdigit () ne fonctionne que sur des entiers (les flottants contiennent "." qui n'est pas un nombre et renvoie False) .
Par exemple:
string = 54.123
new_string = string.replace('.', '') # replace . with nothing
print(new_string) # 54123
Remarque: si vos données contiennent des éléments tels que 123ab56 , alors ce ne sera pas bon pour vous.
Pour convertir 54.123 en 54123, vous pouvez utiliser la fonction replace (ancien, nouveau) .
Par exemple:
def numCheck(string): # Checks if the input string contains numbers return any(i.isdigit() for i in string) string = '54.123' print(numCheck(string)) # True string = 'hello' print(numCheck(string)) # False
Merci pour votre commentaire! Je vais l'examiner!
Vous pouvez essayer de convertir la ligne courante en flottant. Si la ligne ne contient pas de nombre flottant légitime, elle renvoie une exception ValueError que vous pouvez attraper et simplement passer. Si aucune exception n'est lancée, divisez simplement la ligne au niveau du point, joignez les 2 parties, convertissez en int et ajoutez au tableau.
my_list = []
with open('file.txt') as f:
lines = f.readlines()
for line in lines:
try:
tmp = float(line)
num = int(''.join(line.split(".")))
my_list.append(num)
except ValueError:
pass
#convert to a string
listToStr = ' '.join([str(elem) for elem in my_list])
print(listToStr)
Eh bien, que pensez-vous de cette erreur?