簡體   English   中英

如何將列表混合列表中的數字字符串轉換為 int (Python)

[英]How to convert numerical strings inside a mixed list of list to int (Python)

如何將包含字母和數字字符串的列表列表中的所有數字字符串轉換為 integer?

我的 Output:

[['69', ' Test', 'Results'], ['A', 'B', 'C'], ['D', '420', 'F']]

意向 Output:

[[69, ' Test', 'Results'], ['A', 'B', 'C'], ['D', 420, 'F']]

請注意,我的代碼讀取了一個 CSV 文件。 感謝大家

def get_csv_as_table(a, b):
s = False
import csv

with open(a) as csv_file:
    file_reader = csv.reader(csv_file, delimiter=b)
    member = list(file_reader) 

    print(member)

print ("Enter filename: ")
a = input()
print ("Enter the delimiter: ")
b = input()
get_csv_as_table(a, b)

Yoy 必須結合 2 個級別的列表理解並使用str.isdigit()

values = [
    [int(val) if val.isdigit() else val for val in row]
    for row in values
]

嘗試使用 2 級列表理解和int() + .isdigit()列表理解中的強大組合;-)

l=[['69', ' Test', 'Results'], ['A', 'B', 'C'], ['D', '420', 'F']]
l=[[int(y) if y.isdigit() else y for y in x] for x in l]
print(l)

Output:

[[69, ' Test', 'Results'], ['A', 'B', 'C'], ['D', 420, 'F']]

.isdigit()僅適用於純整數的字符串表示,以防萬一您也有浮點數,然后替換“。” 什么都沒有;-)

l=[['69', ' Test', 'Results'], ['A', 'B', 'C'], ['D', '420', 'F']]
l=[[float(y) if y.replace('.','').isdigit() else y for y in x] for x in l]
print(l)

Output:

[[69.0, ' Test', 'Results'], ['A', 'B', 'C'], ['D', 420.0, 'F']]

您可以使用列表理解來實現此目的。 唯一的小缺點是您將為此創建一個新列表,而不是修改現有列表。

my_list = [['69', 'Test', 'Results'], ['A', 'B', 'C'], ['D', '420', 'F']]

filtered_list = [
    [int(item) if item.isdigit() else item for item in sub_list]
    for sub_list in my_list
]

如果要就地編輯列表,可以使用傳統的 for 循環。 以下代碼將編輯現有列表而不創建新列表。 如果您的列表很大,這可能會很有用。

my_list = [['69', 'Test', 'Results'], ['A', 'B', 'C'], ['D', '420', 'F']]

for i in range(len(my_list)):
    for j in range(len(my_list[i])):
        if my_list[i][j].isdigit():
            my_list[i][j] = int(my_list[i][j])

str.isdigit()檢查給定的字符串是否為數字。 要記住的重要注意事項是,它不適用於浮點數,僅適用於整數。 一旦條件通過,該項目將轉換為 integer。

暫無
暫無

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

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