相关疑难解决方法(0)

从C/C++代码中删除注释

有没有一种简单的方法可以从C/C++源文件中删除注释而无需进行任何预处理.(也就是说,我认为你可以使用gcc -E,但这会扩展宏.)我只想要删除注释的源代码,不应该改变任何其他内容.

编辑:

对现有工具的偏好.我不想用正则表达式自己写这个,我预见代码中有太多的惊喜.

c c++ comments

67
推荐指数
4
解决办法
6万
查看次数

在Python中处理懒惰的JSON - '期望属性名'

使用Pythons(2.7)'json'模块我正在寻找处理各种JSON提要.不幸的是,其中一些提要不符合JSON标准 - 具体而言,某些键不包含在双重语音标记(")中.这导致Python出错.

在编写一个丑陋的代码片段来解析和修复传入的数据之前,我想我会问 - 有没有办法允许Python解析这个格式错误的JSON或"修复"数据,这样就可以了有效的JSON?

工作实例

import json
>>> json.loads('{"key1":1,"key2":2,"key3":3}')
{'key3': 3, 'key2': 2, 'key1': 1}
Run Code Online (Sandbox Code Playgroud)

破碎的例子

import json
>>> json.loads('{key1:1,key2:2,key3:3}')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\json\__init__.py", line 310, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\json\decoder.py", line 346, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python27\lib\json\decoder.py", line 362, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 1 (char 1)
Run Code Online (Sandbox Code Playgroud)

我已经编写了一个小的REGEX来修复来自这个特定提供商的JSON,但我预测这将成为未来的一个问题.以下是我提出的建议.

>>> import re
>>> s …
Run Code Online (Sandbox Code Playgroud)

python json

47
推荐指数
4
解决办法
7万
查看次数

Pycparser评论失败

当我试图使用pycparser注释解析文件时,我得到了ParseError

import pycparser
parser = pycparser.CParser()
parser.parse("int main(void){return 0;}")
parser.parse("/* comment */ int main(void){return 0;}")


Traceback (most recent call last):
File "test_pycparser.py", line 18, in <module> parser.parse("/* comment */ int main(void){return 0;}")
File "build\bdist.win32\egg\pycparser\c_parser.py", line 124, in parse
File "build\bdist.win32\egg\pycparser\ply\yacc.py", line 265, in parse
File "build\bdist.win32\egg\pycparser\ply\yacc.py", line 1047, in parseopt_notrack
File "build\bdist.win32\egg\pycparser\c_parser.py", line 1423, in p_error
File "build\bdist.win32\egg\pycparser\plyparser.py", line 54, in _parse_error
pycparser.plyparser.ParseError: :1:1: before: /
Run Code Online (Sandbox Code Playgroud)

解决方案:pycparser在当前版本中不支持源代码中的注释,但是这个fork允许它,或者您可以使用来自问题Python片段的配方来删除C和C++注释以从源代码中删除注释.

import pycparser …
Run Code Online (Sandbox Code Playgroud)

c python pycparser

4
推荐指数
1
解决办法
3279
查看次数

标签 统计

c ×2

python ×2

c++ ×1

comments ×1

json ×1

pycparser ×1