【问题标题】:How can I extract certain portions of all lines in a text file?如何提取文本文件中所有行的某些部分?
【发布时间】:2020-08-07 00:15:39
【问题描述】:

我有一个包含多行数据的文本文件,但我只需要知道一行的一小部分。从初始文件中,我可以将其缩小到包含我需要的信息的行,但我不确定如何仅提取必要的数据:mfgcode、modelno 和 qtyavail 的内容。

import csv

with open('file.csv', 'r') as csv_file:
    csv_reader = csv.reader(csv_file)

    for line in csv_reader:
        print(line)

结果文本文件被打印出来,响应是:

['<part branch="1" core="0.00" cost="10.39" deliverytime="1" desc="" errcode="success" kit="" linecode="brand" linenum="1" list="30.08" mfgcode="nike" modelno="1110" qtyavail="40" qtyreq="1" uom="" />']
['<part branch="1" core="0.00" cost="10.66" deliverytime="1" desc="" errcode="success" kit="" linecode="brand" linenum="1" list="30.48" mfgcode="adidas" modelno="1109" qtyavail="209" qtyreq="1" uom="" />']
['<part branch="1" core="0.00" cost="20.17" deliverytime="1" desc="" errcode="success" kit="" linecode="brand" linenum="1" list="30.24" mfgcode="puma" modelno="1108" qtyavail="2" qtyreq="1" uom="" />']

如何只提取mfgcode、modelno和qtyavail的值?

【问题讨论】:

    标签: python database python-requests extract readlines


    【解决方案1】:

    试试这个:

    import csv
    import re
    
    with open('file.csv', 'r') as csv_file:
        csv_reader = csv.reader(csv_file)
    
    ff = []
    for line in csv_reader:
           ff.append([re.search('mfgcode="(.+?)"', line[0] ).group(1),re.search('modelno="(.+?)"', line[0] ).group(1),re.search('qtyavail="(.+?)"', line[0] ).group(1)])
            
    df = pd.DataFrame(ff,columns =['mfgcode','modelno','qtyavail'])
    df.to_csv("test.csv",index=False)
    print (df)    
    

    输出:

      mfgcode modelno qtyavail
    0    nike    1110       40
    1  adidas    1109      209
    2    puma    1108        2
    

    【讨论】:

    • 您好,感谢您的帮助。我如何将结果保存在新文件中?
    • @techsandspecs 再次检查我的答案。您可以将其保存为本地目录中的 csv 文件。
    【解决方案2】:

    使用 print(line[1]) 选择自定义单元格。

    【讨论】:

    • 您好,感谢您的回复。这仅在文件具有某种分隔符时才有效。这个文件只有空格作为分隔符,所以我不知道如何适应它。感谢您的帮助
    • csv.reader(csv_file, delimiter='space here') 可能会有所帮助
    • 哈哈,这是我在这里发帖之前尝试的最后一个选项。感谢您的快速响应。
    猜你喜欢
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    相关资源
    最近更新 更多