2017-06-17 136 views
0

在Windows 10通過遍歷文件讀取

我有一個叫upgrade.csv文件,其中包含此使用Python 3.5.2 ::蟒蛇4.0.0(64位):

['$APPL','$FB','$MSLI','$AMZN','$NVDA','$WMT','$NFLX'] 

我想遍歷每個這些股票代碼。

從與下面的代碼返回該文件拉:

[ 
' 
$ 
A 
P 
P 
L 
' 
, 
' 
$ 
F 
B 
' 
, 

等通過數據。

第一代碼:

file = open('upgrades.csv', 'r') 
upgrades = (file.read()) 
file.close() 
upgrades = list(upgrades) 
for i in range(len(upgrades)): 
    print(upgrades[i]) 

從顯式串拉回到我想要什麼:

$APPL 
$FB 
$MSLI 
$AMZN 
$NVDA 
$WMT 
$NFLX 

第二碼:

upgrades = ['$APPL','$FB','$MSLI','$AMZN','$NVDA','$WMT','$NFLX'] 
upgrades = list(upgrades) 
for i in range(len(upgrades)): 
    print(upgrades[i]) 

請幫我從文件中提取數據,並得到這個結果:

$APPL 
$FB 
$MSLI 
$AMZN 
$NVDA 
$WMT 
$NFLX 

我已經試過轉換數據,如:

upgrades = list(upgrades) 
upgrades = str(upgrades) 
upgrades = tuple(upgrades) 

我也試着從CSV改變文件爲txt。

+1

嘗試使用Google ReadLine方法。這種方法可以用於按行讀取文件行 –

+0

謝謝Arpit –

回答

1

將其視爲單行csv並按以下步驟操作。

with open('upgrades.csv', 'r') as upgrade: 
    for line in upgrade.readlines(): 
     lines = line.split(",") 
     for m in lines:print m 
+1

謝謝......比我多說一聲謝謝。我會盡快接受這個答案。 –

0
In[5]: import json 
    ...: 
    ...: with open('upgrades.csv', 'r') as f: 
    ...:  data = json.loads(f.read().replace("'", '"')) 
    ...: 
    ...: print(data) 
    ...: for item in data: 
    ...:  print(item) 
    ...: 
['$APPL', '$FB', '$MSLI', '$AMZN', '$NVDA', '$WMT', '$NFLX'] 
$APPL 
$FB 
$MSLI 
$AMZN 
$NVDA 
$WMT 
$NFLX 

In[6]: from ast import literal_eval 
    ...: 
    ...: with open('upgrades.csv', 'r') as f: 
    ...:  data = literal_eval(f.read()) 
    ...: 
    ...: print(data) 
    ...: for item in data: 
    ...:  print(item) 
    ...: 
['$APPL', '$FB', '$MSLI', '$AMZN', '$NVDA', '$WMT', '$NFLX'] 
$APPL 
$FB 
$MSLI 
$AMZN 
$NVDA 
$WMT 
$NFLX 
+0

這太好了。在另一個我已經寫入腳本的答案中,要求我編輯文件文本以刪除括號和撇號。我也沒有意識到我們可以像這些例子中那樣輸出結果。非常有用,謝謝。 –

+0

@MicahMorris沒問題,只是想表現另一種方式。使用'json.loads'的一個問題是,使用單引號是* not *有效的JSON,因此我使用'str.replace'將單引號轉換爲雙引號。如果其中一個項目中有一個單引號,那麼這個方法只會將其改爲雙引號(這可能不是您想要的)。這就是爲什麼我在第二個例子中使用了'ast.literal_eval',因爲它已經看起來像一個Python列表,而'ast.literal_eval'是比使用'eval'更安全的方式。 –