【问题标题】:Iterating through file read遍历文件读取
【发布时间】:2017-06-18 04:55:08
【问题描述】:

在 Windows 10 上使用 Python 3.5.2 :: Anaconda 4.0.0(64 位)。

我有一个名为 upgrade.csv 的文件,其中包含以下内容:

['$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。

【问题讨论】:

  • 尝试谷歌搜索 readLine 方法。该方法可用于逐行读取文件

标签: python python-3.x


【解决方案1】:

将其视为单行 csv 并按以下方式进行。

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

【讨论】:

  • 谢谢你... 比我说的还要感谢。我会尽快接受这个答案。
【解决方案2】:
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

【讨论】:

  • 这很棒。在我已经编码到脚本中的另一个答案中,要求我编辑文件文本以删除括号和撇号。我也没有意识到我们可以像在这些示例中那样让输出显示输入。非常有用,谢谢。
  • @MicahMorris 没问题,只是想展示另一种方式。使用json.loads 的一个问题是单引号是not 有效的JSON,所以我使用str.replace 将单引号转换为双引号。如果其中一个项目中有一个单引号 '$it\'s',则此方法只会将其更改为双引号(这可能不是您想要的)。这就是我在第二个示例中使用ast.literal_eval 的原因,因为它已经看起来像一个Python 列表,而ast.literal_eval 是一种比使用eval 更安全的转换方式。
猜你喜欢
  • 2018-11-29
  • 2019-03-29
  • 1970-01-01
  • 1970-01-01
  • 2011-07-22
  • 2010-11-05
  • 2011-03-07
  • 1970-01-01
  • 2020-02-28
相关资源
最近更新 更多