簡體   English   中英

如何從列表python中刪除字符串

[英]How to remove a string from a list python

是否可以刪除字符串並只有列表

data = [
"50,bird,corn,105.4,"
"75,cat,meat,10.3,"
"100,dog,eggs,1000.5,"
]

希望它看起來像這樣

data = [
50,'bird','corn',105.4,
75,'cat','meat',10.3,
100,'dog','eggs',1000.5,
]
out = []
for x in data:
  for e in x.split(","):
    out.append(e)

這有什么作用? 它在逗號的data拆分每個元素 ( x ),挑選出每個單獨的標記 ( e ),並將它們放入變量 ( out.append ) 中。

new_data = []
for i in data:
    new_data.extend(i.split(','))
new_data

請注意可能存在問題(例如,最后一個逗號后面沒有任何內容,因此它會生成一個 '' 字符串作為新數組中的最后一個元素)。

如果您想專門將數字轉換為整數和浮點數,也許有一種更優雅的方法,但這會起作用(如果您有多余的逗號,它也會刪除空單元格):

new_data = []
for i in data:
    strings = i.split(',')
    for s in strings:
        if (len(s)>0):
            try:
                num = int(s)
            except ValueError:
                try:
                    num = float(s)
                except ValueError:
                    num = s
            new_data.append(num)
new_data

拆分每個字符串(這將為您提供每個字符串中“,”之間的段數組):

str.split(",")

並將數組加在一起

因為列表中的每個字符串都有一個尾隨逗號,所以您可以簡單地將它作為一個字符串重新組合在一起,然后用逗號再次拆分。 為了在結果列表中獲得實際的數字項,您可以這樣做:

import re
data = [
    "50,bird,corn,105.4,"
    "75,cat,meat,10.3,"
    "100,dog,eggs,1000.5,"
]
numeric = re.compile("-?\d+[\.]\d*$")
data = [ eval(s) if numeric.match(s) else s for s in "".join(data).split(",")][:-1]

data # [50, 'bird', 'corn', 105.4, 75, 'cat', 'meat', 10.3, 100, 'dog', 'eggs', 1000.5]

暫無
暫無

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

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