【发布时间】:2017-10-25 14:19:32
【问题描述】:
我想读取 csv 文件的前 3 列并在存储它们之前进行一些修改。 csv文件中的数据:
{::[name]str1_str2_str3[0]},1,U0.00 - Sensor1 Not Ready\nTry Again,1,0,12
{::[name]str1_str2_str3[1]},2,U0.00 - Sensor2 Not Ready\nTry Again,1,0,12
从 column1 中,我只想解析 [ ] 中的值 0 或 1。 然后column2中的值 从 column3,我想解析子字符串“Sensor1 Not Ready”。然后转换为大写并用下划线替换空格(例如 - SENSOR1_NOT_READY)。然后在新列中打印字符串。
解析格式-
**<value from column 1>.<value from column 2>.<string from column 3>**
我是 Python 编码的新手。有人可以帮我弄这个吗?最好和最有效的方法是什么? TIA
到目前为止我所尝试的 -
import csv
from collections import defaultdict
columns = defaultdict(list)
with open('filename.csv','rb') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
for i in range(len(row)):
columns[i].append(row[i])
columns = dict(columns)
这是第 3 列的好方法吗?
x = # Parsed data from Column 3'
a, b = x.split("\n") # 'a' denotes the substring before \n
c, d = a.split("-") # 'd' denotes the substring after '-'
e = d.upper()
new_str = str.replace(" ", "_")
print new_str
【问题讨论】:
-
你试过什么?你看过
csv模块的 python 文档吗? -
是的,我确实经历过。我唯一能理解的是如何读取 csv 文件。
-
如果您可以向我们展示您尝试过的代码,我们可以帮助您。如果您不显示任何代码,您可能不会获得太多帮助。
-
@TomDalton 我在我的原始帖子中添加了一个代码 sn-p。
-
好的,所以我可以看到你有
columns作为默认字典,键是 CSV 行号。每个值都是一个列表,表示该 CSV 行中的单元格。但是,您说您的问题在于从列中解析数据?你有什么尝试?可能值得提出一个新问题,并忽略有关 CSV 的信息(因为这似乎不是问题),而是专注于“我如何从 Y 中解析 X?”,以及一个小的 sn- p 你为此做了什么。