簡體   English   中英

如何在python中替換空字符串

[英]How to replace empty string in python

我有一個csv文件,並將其讀入數組,原始csv是一個5行8列的文件,其中包含空元素

       1  2         3        4    5    6   7         8     
Row 1:   '1 1'     '4 4'                  '2 2'   
Row 2:   '3'       '3'                    '3' 
Row 3:   '1 1 1 1' '1 1 1 1'              '2 2 2 2'
Row 4:   '2'       '4'                    '2' 
Row 5:   '4'       '4'                               '4'

我將其讀入我的代碼中:

[[nan '1 1' '4 4' nan nan nan '2 2' nan]
 [nan '3' '3' nan nan nan '3' nan]
 [nan '1 1 1 1' '1 1 1 1' nan nan nan '2 2 2 2' nan]
 [nan '2' '4' nan nan nan '2' nan]
 [nan '4' '4' nan nan nan nan '4']]

所以我想要得到的是用其他元素將所有空元素替換為相同數量的-1

[['-1 -1' '1 1' '4 4' '-1 -1' '-1 -1' '-1 -1' '2 2' '-1 -1']
 ['-1' '3' '3' '-1' '-1' '-1' '3' '-1']
 ['-1 -1 -1 -1' '1 1 1 1' '1 1 1 1' '-1 -1 -1 -1' '-1 -1 -1 -1' '-1 -1 -1 -1' '2 2 2 2' '-1 -1 -1 -1']
 ['-1' '2' '4' '-1' '-1' '-1' '2' '-1']
 ['-1' '4' '4' '-1' '-1' '-1' '-1' '4']]

當我使用re.match("\\d",element) ,無法獲得結果。 有人可以幫忙嗎?

關於什么 :

for line in csvdata:
    multiplicity = max([len(datum.split(" ")) if isinstance(datum, str) else 0 for datum in line])
    for datum in line:
        if(not isinstance(datum, str)):
            datum = " ".join(["-1"]*multiplicity)

在我看來,這很糟糕,但應該可以。

嘗試這個:

xs=[["nan '1 1' '4 4' nan nan nan '2 2' nan"],
    ["nan '3' '3' nan nan nan '3' nan"],
    ["nan '1 1 1 1' '1 1 1 1' nan nan nan '2 2 2 2' nan"],
    ["nan '2' '4' nan nan nan '2' nan"],
    ["nan '4' '4' nan nan nan nan '4'"]]

for x in xs:
   s = len(x[0].replace('nan','').replace(' ','').split("''")[0])-1
   r = ' '.join('v'*s).replace('v', '-1')
   r = "'%s'" % r
   x[0] = x[0].replace('nan', r)

我相信您應該在問題中明確說明您正在使用庫(numPy)。 大多數解決方案都適用於Python,但是由於您已經在使用numpy,因此我相信這是一個更好的解決方案

x = np.asarray(pd.read_csv("data/org8.csv"))
x[np.isnan(x)] = -1

暫無
暫無

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

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