python - python脚本排除csv单元格数据的特定字段
问题描述
使用 python 我正在尝试使用现有数据创建摘要,csv
并发现从其中一个单元格中提取数据的困难。
我只想包含来自 info 4 列的城市名称和文件路径,并期望摘要如下 -AlexxxxxyyyyzzzzzNewyork\Folder1\Folder2\Test.txt
编码
csv_data_out[csv_line_out].append(conten[Name])
csv_data_out[csv_line_out].append(conten[info 1])
csv_data_out[csv_line_out].append(conten[info 2])
csv_data_out[csv_line_out].append(conten[info 3])
csv_data_out[csv_line_out].append(conten[info 4])
csv_summary = ("".join(csv_data_out[csv_line_out]))
with open(outputfile, 'wb') as newfile:
writer = csv.writer(newfile, delimiter = ';')
writer.writerow(csv_columns_out[:])
writer.writerows(csv_data_out)
newfile.close()
任何想法只从 info 4 col 获取所需的详细信息?
解决方案
本质上,您在 csv 中有一个 csv。没有发布信息来给出完整的答案,但这是其中的大部分。
您可以使用 io.StringIO (或 io.BytesIO 如果是字节字符串)获取一个字符串并将其作为 csv 处理。
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import csv
from io import StringIO
# Create somewhere to put the inputs in case needed later
stored_items = []
with open('data.csv', 'r') as csvfile:
inputs = csv.reader(csvfile)
# skip the header row
next(inputs)
for row in inputs:
# Extract the Info 4 column for processing
f = StringIO(row[4])
string_file = csv.reader(f,quotechar='"')
build_string = ""
for string_row in string_file:
build_string = f"{string_row[0]}{string_row[1]}"
# Merge everything into a summary
summary_string = f"{row[0]}{row[1]}{row[2]}{row[3]}{build_string}"
# Add all the data back to storage
stored_items.append((row[0],row[1],row[2],row[3],row[4],summary_string))
print(summary_string)
我之所以说没有足够的信息张贴在其中的原因是,例如,该位置将始终是(a)
可以具有固定文本替换的位置,还是有条件的,例如它可能是(a)
或(b)
在这种情况下可能需要正则表达式。(除非绝对必要,否则我的偏好是不使用正则表达式)。此外,您是否总是在前两个术语之后Info 4
,或者这些术语会在文本中的不同位置找到等等。如果没有看到更多的数据样本,就不可能明确回答。
推荐阅读
- java - 如何在android中构建后修复ArrayList的冗余
- python-3.x - 使用 beautifulsoup3 将 Web Url 结果导出到 CSV 时出现问题
- python - 在 Keras 中定义二进制掩码
- java - 如何定义过滤器,将附加的 where 条件附加到 Spring Data 中的所有查询
- c# - 即使数据库内容记录和代码中使用生成的模型,也不会抛出这样的表
- mysql - 使用存储过程将极光数据加载到s3
- sbt - sbt 解析耗时太长
- java - RestAssured:java.lang.IllegalArgumentException:要使用的架构不能为空?
- javascript - 从另一条路线单击后如何立即获得徽章渲染
- ios - 当 UIViewController 在启动期间设置为 UIWindow 的根时,不会调用 viewWillAppear 和以后的生命周期事件