【发布时间】:2019-11-13 19:25:28
【问题描述】:
我正在将一个文本文件解析为几个字典,以便将它们写入 CSV 文件。但现在我在文本文件中有 cmets。如何忽略注释行并处理其余内容?
我检查了几篇推荐 Pandas read_csv 的帖子,但在我有数据框后它会起作用。
我需要在解析之前忽略 cmets 并阅读其余内容。
编辑:我关心 sql cmets:- 和 /* .... */
我的部分代码:(form是我自己定义的语法)
with open("xyz.txt", 'r') as file:
if re.search(r'select|SELECT', file.read()):
print("hello select")
a = form.parseString(open('xyz.txt').read());
z=a.asDict()
文本文件:
/*this is a multi line comment which
needs to be ignored */
select book from tab where b=100 --single line comment which should be ignored
select sal from emp where job_id=101
我尝试使用startswith(#) 进行单行注释,但代码继续运行并且没有结果..我不知道多行 cmets。
with open("xyz.txt", 'r') as file:
for line in file:
li=line.strip()
if not li.startswith("#"):
new=line.rstrip()
while new:
if re.search(r'select|SELECT', file.read()):
print("hello select")
a = form.parseString(open('xyz.txt').read());
z=a.asDict()
【问题讨论】:
-
你可以
line.split(' #')[0]摆脱单行cmets -
发布最终 csv 内容的外观
-
@RomanPerekhrest 最终的 CSV 内容不是我的问题。问题是忽略文本文件的 cmets 以执行进一步解析并将其写入 csv 文件。只有在忽略 cmets 并读取其余内容时,我才能执行这些操作。
-
请将您的问题edit@plain 详细说明如何定义 cmets。我们需要处理嵌套的 cmets 吗?引用字符串中的 cmets 呢?有逃生机制吗?您是否搜索过使用 Python 删除 C 风格 cmets 的解决方案?