【问题标题】:Python: values from csv-listPython:来自 csv-list 的值
【发布时间】:2021-07-02 17:19:18
【问题描述】:

我从 csv 文件中创建了一个列表,其中包含第一行的输出:

from csv import reader
    
    with open('GAB_Trends_210406/GAB_trendHwsCeilingSupplyTempEast_210406.csv', 'r', encoding='utf-8-sig') as csv_file:
        csv_reader = reader(csv_file)
        
        list_of_rows = list(csv_reader)
        print(list_of_rows[0])

它的输出:

['28.Mrz 2021 03:46:19 UTC,{ },{ok},485529,,"33,80"']

我怎样才能只打印出值“28.Mrz 2021 03:46:19 UTC”和“33,80”?

新:

我现在有这个:

row = list_of_rows[0] **#row 0 of list**
timestamp = row[0][:20]
value = row[0][43:48]
print(timestamp + ": " + value) 

如果我将行改为:

row = list_of_rows[10] **#row 10 of list**
timestamp = row[0][:20]
value = row[0][43:48]
print(timestamp + ": " + value) 

如何为列表的每一行执行此代码块?我尝试了一个 for 循环,但它不起作用..

【问题讨论】:

  • 所以你的问题和标题实际上是:如何打印出 CSV 文件的第一列和最后一列(第一行)

标签: python list csv sorting arraylist


【解决方案1】:

由于您要处理列表的第一项,这实际上是字符串操作的问题。这可以通过多种方式解决。

给定字符串:

d = '28.Mrz 2021 03:46:19 UTC,{ },{ok},485529,,"33,80"'

您可以拆分字符串并获取所需的元素:

print(d.split(',{')[0], d.split(',,')[-1])

或者你可以对字符串进行切片:

print(d[:24], d[-7:])

两者都会产生所需的输出:

28.Mrz 2021 03:46:19 UTC "33,80"

对于您的功能,它将是:

print(list_of_rows[0][:24], list_of_rows[0][-7:])

【讨论】:

    【解决方案2】:

    当您获取 list_of_rows[0] 时,您会将行定义为列表。如果您想要该列表的第一个和最后一个元素,则必须通过它们的索引来访问它们。

    row = list_of_rows[0]
    timestamp = row[0]
    finalvalue = row[-1] # Indexes final element
    print(timestamp, finalvalue)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-24
      • 2019-08-08
      • 1970-01-01
      • 2019-03-16
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 2016-09-12
      相关资源
      最近更新 更多