python - 如何从行到列打印某些特定字符?
问题描述
我有一个输入文件,其中包含 5 行重复的相同格式的数据。我需要将这些数据格式化为一行(CSV 文件),并且只有几个与我相关的字段。如何使用提供的输入文件实现上述输出。
注意 - 我对学习任何语言都很陌生,还没有达到这么深的细节来写我自己的。我已经编写了导入输入文件的代码,到达一个特定的单词,然后打印其余数据(这是我需要帮助的地方,因为我不需要输入中的所有信息作为使用空间是分隔符没有在正确的列中给出输出)。我还编写了将输出写入 csv 文件的代码。
注2 - 我也很喜欢这个论坛,如果我在发布我的查询时发了任何帖子,请原谅我。
输入 - 输入文件
输出 - 输出文件
import itertools, csv
解决方案
您应该读入文件并手动解析,然后使用csv
模块将其写入.csv
文件:
import re
with open('myfile.txt', 'r') as f:
lines = f.readlines()
# divide on whitespace characters, but not single spaces
lines = [re.split("\s\s+", line) for line in lines]
with open('output.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for line in lines:
writer.writerow(lines)
但这将包括每一条数据。您可以遍历lines
并删除不想保留的字段。所以在你写 csv 之前,你可以这样做:
def filter_line(line):
# see how the input file was parsed
print(line)
# for example, only keep the first 2 columns
return [line[0], line[1]]
lines = [filter_line(line) for line in lines]
推荐阅读
- javascript - 是否建议每个页面都有一个mobx Store?
- asp.net - 如何将 ASP.Net 内部网与 Active Directory 集成?
- windows - %~dp0 返回不正确的路径
- oracle12c - 这时候出乎意料的Jdeveloper12c
- android - DialogFragment 从它导航到另一个片段时关闭
- svg - 在svg中镜像异物
- java - OracleDriver ClassNotFound
- linux - 如何在 Bash 脚本中以千字节为单位打印文件的大小?
- reactjs - Wordpress Gutenberg PluginDocumentSettingPanel 不适用于控件?
- python - 语法解释:python中的方括号