Python脚本从文件中读取并获取值

时间:2010-06-22 09:49:08

标签: python file-io

如果在文件中,存在的值为“或,分隔值

         "Name" "Tom" "CODE 041" "Has"
         "Address" "NSYSTEMS c/o" "First Term" "123" 18  
         "Occ" "Engineer" "Level1" "JT" 18

如何编写python脚本以便单独获取所有上述值

3 个答案:

答案 0 :(得分:3)

你的问题有点模糊,你的例子中没有逗号,所以提供一个好答案有点难。

在包含

的示例文件中
"Name" "Tom" "CODE 041" "Has"
"Address" "NSYSTEMS c/o" "First Term" "123" 18  
"Occ" "Engineer" "Level1" "JT" 18

此脚本

import csv
reader = csv.reader(open('test.txt'), delimiter=' ', quotechar='"')
for row in reader:
    print(row)

产生

['Name', 'Tom', 'CODE 041', 'Has']
['Address', 'NSYSTEMS c/o', 'First Term', '123', '18']
['Occ', 'Engineer', 'Level1', 'JT', '18']

这假设值之间的分隔符是空格。如果是标签,请改用delimiter='\t'

如果分隔符在整个文件中发生更改,那么您对这种方法不太满意 - 在这种情况下,它们不再是有效的CSV / TSV文件。但所有这些只是猜测,直到您可以提供一些您想要分析的数据的实际和相关示例。

答案 1 :(得分:1)

使用csv阅读器的另一种方法。

<强> in.txt

"Name" "Tom" "CODE 041" "Has"
"Address" "NSYSTEMS c/o" "First Term" "123" 18  
"Occ" "Engineer" "Level1" "JT" 18

<强> parse.py

for i in [line.split('"') for line in open("in.txt")]: # split on the separator
    for j in i: # for each token in the split string
        if len(j.strip())>0: # ignore empty string, like the spaces between elements
            print j.strip()

<强> out.txt

Name
Tom
CODE 041
Has
Address
NSYSTEMS c/o
First Term
123
18
Occ
Engineer
Level1
JT
18

但我会称你的价值为" enclosed。我看不到任何, separated。你能扩展你的测试数据吗?显示一些带有分隔值的行,然后展开我的代码。

答案 2 :(得分:0)

使用csv模块它将正确处理所有类型的分隔符和引号,使用split等编写此类代码并非易事

import csv
import StringIO

data = '''"Name" "Tom" "CODE 041" "Has"
"Address" "NSYSTEMS c/o" "First Term" "123" 18  
"Occ" "Engineer" "Level1" "JT" 18"
'''

reader = csv.reader(StringIO.StringIO(data), delimiter=' ')
for row in reader:
    print row

输出:

['Name', 'Tom', 'CODE 041', 'Has']
['Address', 'NSYSTEMS c/o', 'First Term', '123', '18']
['Occ', 'Engineer', 'Level1', 'JT', '18']