2016-11-14 145 views
1

我正在使用xlrd.xlsx文件解析爲JSON格式。我遇到了逗號和點的問題..在Python中用逗號替換逗號XLRD

我輸入到Excel文件中的值:152,203。我想解析這個值爲:152.203,但沒有運氣。它將值保存爲152這是一個問題。在荷蘭語中,逗號經常被用作點,所以這個錯誤必須被捕獲。

部分的代碼示例:

key3 = OrderedDict() 
row_values3 = sheet.col_values(1, 0, 60) 

comma_to_dot = row_values3[36] # cell with 152,203 
key3['Value'] = comma_to_dot.replace(",",".") 

data.append(key3)  

j = json.dumps(data) 

with open(full_path, 'w') as datafile: 
    datafile.write(j) 

print(full_path) 

此代碼給錯誤:AttributeError: 'float' object has no attribute 'replace'

我也曾嘗試:

key3['Value'] = int(row_values3[36]) 

不過這也返回152

+0

JSON要求浮點數爲'x.y',並且不允許有數千個分隔符。你如何*顯示*這是一個本地化問題,應該由你的用戶通過哪些用戶界面來處理。 – jonrsharpe

+0

我明白了,但我只是想在一個值中將逗號更改爲點。這些只能是一個或兩個逗號。 –

+0

您似乎需要在Excel中設置語言環境,這與XLRD無關。正如錯誤消息告訴你的,你得到的是一個浮點*數字*返回,而不是一個字符串。 – jonrsharpe

回答

0

你如何知道它將價值保存爲152?

在此之後:

comma_to_dot = row_values3[36] # cell with 152,203 

插入這樣的:

print(type(comma_to_dot), repr(comma_to_dot)) 

這將顯示在單元格中的精確值。將點解釋爲小數點。區域設置無關緊要。請顯示(複製/粘貼)打印的內容。 如果這不是你想要的,請告訴我們你想要什麼。