如果在文件中,存在的值为“或,分隔值
” "Name" "Tom" "CODE 041" "Has"
"Address" "NSYSTEMS c/o" "First Term" "123" 18
"Occ" "Engineer" "Level1" "JT" 18
如何编写python脚本以便单独获取所有上述值
答案 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']