簡體   English   中英

刪除不需要的字符並在Python中轉換為int

[英]Remove unwanted characters and convert to int in Python

以以下格式顯示時,從文件中讀取一行數字的最佳方法是:

[1, 2, 3 , -4, 5]
[10, 11, -12, 13, 14 ]

令人討厭的是,正如我所描述的,有時數字之間有多余的空間,有時沒有。 我嘗試使用CSV解決逗號,但是事實證明括號和隨機空格也很難刪除。 理想情況下,我會將括號之間的每個數字作為一個int附加到list ,但是當然括號會導致int()失敗。

我已經研究過類似的解決方案,建議使用從PythonPython讀取文件中 的字符串中刪除不需要的字符 ,查找字符串並刪除字符 ,但是不幸的是,當我嘗試將所有內容組合在一起時,我總是無法做到。

使用正則表達式從字符串中刪除所有不需要的字符

import re
text_ = re.sub("[0-9]+", " ", text);

第二種方法:

str = "h3110 23 cat 444.4 rabbit 11 2 dog"
>>> [int(s) for s in str.split() if s.isdigit()]
[23, 11, 2]

使用ast.literal_eval()是另一種選擇:

from ast import literal_eval

with open("your_file.txt") as file_obj:
    for line in file_obj:
        lst = literal_eval(line)
        do_stuff(lst)

由於每一行似乎已經是一個文字python列表,因此您可以使用ast模塊:

import ast

with open('myfile.txt') as fh:
    for line in fh:
        numbers_list = ast.literal_eval(line)

請注意,您可以使用內置函數eval()獲得相同的結果,但使用ast可以更安全地防止惡意輸入。

使用json模塊將每一行解析為一個JSON數組。

import json

list_of_ints = []
for line in open("/tmp/so.txt").readlines():
    a = json.loads(line)
    list_of_ints.extend(a)
print(list_of_ints)

list_of_ints所有行中的所有整數收集到list_of_ints 輸出:

[1, 2, 3, -4, 5, 10, 11, -12, 13, 14]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM