今天在看pygments的代码的时候,发现有一个类是 自生成式的 就是在main方法里面 通过一系列操作写文件
当然 这个文件就是他自己了
其中的代码片段
"""
pygments.lexers._mapping
~~~~~~~~~~~~~~~~~~~~~~~~
Lexer mapping defintions. This file is generated by itself. Everytime
you change something on a builtin lexer defintion, run this script from
the lexers folder to update it.
Do not alter the LEXERS dictionary by hand.
:copyright: Copyright 2006-2010 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
LEXERS = {
'ABAPLexer': ('pygments.lexers.other', 'ABAP', ('abap',), ('*.abap',), ('text/x-abap',)),
}
if __name__ == '__main__':
import sys
import os
# lookup lexers
found_lexers = []
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..'))
for filename in os.listdir('.'):
if filename.endswith('.py') and not filename.startswith('_'):
module_name = 'pygments.lexers.%s' % filename[:-3]
print module_name
module = __import__(module_name, None, None, [''])
for lexer_name in module.__all__:
lexer = getattr(module, lexer_name)
found_lexers.append(
'%r: %r' % (lexer_name,
(module_name,
lexer.name,
tuple(lexer.aliases),
tuple(lexer.filenames),
tuple(lexer.mimetypes))))
# sort them, that should make the diff files for svn smaller
found_lexers.sort()
# extract useful sourcecode from this file
f = open(__file__)
try:
content = f.read()
finally:
f.close()
header = content[:content.find('LEXERS = {')]
footer = content[content.find("if __name__ == '__main__':"):]
# write new file
f = open(__file__, 'w')
f.write(header)
f.write('LEXERS = {\n %s\n}\n\n' % ',\n '.join(found_lexers))
f.write(footer)
f.close()
前面的是生成一个列表
关键是地方在
# extract useful sourcecode from this file
f = open(__file__)
try:
content = f.read()
finally:
f.close()
header = content[:content.find('LEXERS = {')]
footer = content[content.find("if __name__ == '__main__':"):]
# write new file
f = open(__file__, 'w')
f.write(header)
f.write('LEXERS = {\n %s\n}\n\n' % ',\n '.join(found_lexers))
f.write(footer)
f.close()
就是打开文件,然后依次写头部。写尾部。首先把文件读取出来。字符才转换成列表的形式
然后用find()的方法 找到要查找的串的第一个元素开始的位置。然后就是用列表的切片来截取了
有一个地方用了%r 格式化
经过我的测试 %r 和%s相比 %r会把回车换行这些转换成\n
这样写文件的话 就不会因为系统的差异而导致文件格式不一致 甚至出现问题了
分享到:
相关推荐
C语言字符串转换为Python字符串的方法 C语言字符串转换为Python字符串是指将C语言中的字符串数据转换为Python中的字符串对象,以便在Python环境中使用。下面详细介绍了C语言字符串转换为Python字符串的方法。 使用...
Python 实现字符串模糊匹配 Python 是一种流行的编程语言,具有强大的字符串处理能力。字符串模糊匹配是字符串处理中的一种重要技术,用于解决字符串之间的相似度计算问题。在本文中,我们将介绍 Python 实现字符串...
在Python编程语言中,字符串加密通常用于保护敏感信息,使其在传输或存储时不被轻易解读。虽然本例中的加密方法可能并不适用于高安全性的场景,但作为初学者了解加密概念和基础实现的一个起点,它是相当实用的。我们...
Python字符串是编程中常用的数据类型,用于存储和处理文本信息。在Python中,字符串是由一个或多个字符组成的序列,它们可以被单引号(' ')或双引号(" ")包围。以下是一些关于Python字符串的重要知识点: 1. **字符...
Python字符串是编程语言中至关重要的数据类型,用于存储和处理文本信息。在Python中,字符串是不可变的,意味着一旦创建,就不能改变其内容。这个特性使得字符串在处理文本时非常安全,但也意味着如果需要修改,必须...
在给定的文件内容中,我们可以看到有关Python字符串操作的知识点。这些操作涉及到C语言风格的字符串函数模拟,但它们实际上并不是Python原生的字符串操作方法。Python语言本身就拥有强大的字符串处理能力,不过,...
Python字符串操作常用函数,包含了检索、统计、分割、替换、大小写转换、对齐,空格删除、字符串判断(头尾+组成)
print string.split('-', 2)` 将输出一个截取的字符串列表,但是截取的次数不超过指定的次数。 Python 中的字符串处理提供了多种方法来对齐、转义、连接和截取字符串,为 Python 编程提供了强大的字符串处理能力。
**功能:** 使用分隔符连接字符串列表。 - 示例代码: ```python delimiter = ',' mylist = ['Brazil', 'Russia', 'India', 'China'] print(delimiter.join(mylist)) # 输出: "Brazil,Russia,India,China" ``` ...
python串口发送数据与接收数据(文本转hex 接收字符串或者列表类型)
Python 清洗字符串和列表 Python源码Python 清洗字符串和列表 Python源码Python 清洗字符串和列表 Python源码Python 清洗字符串和列表 Python源码Python 清洗字符串和列表 Python源码Python 清洗字符串和列表 Python...
python字符串学习笔记
Python 如何实现字符串与列表等数据的去重 Python源码Python 如何实现字符串与列表等数据的去重 Python源码Python 如何实现字符串与列表等数据的去重 Python源码Python 如何实现字符串与列表等数据的去重 Python源码...
将传入的值转换成列表,要求传入值要满足列表的合法符号。输出结果列表中的所有元素都会以字符串的形式展现。
Python字符串提供了一系列内置方法,如`lower()`、`upper()`、`title()`用于大小写转换,`split()`用于分割字符串,`join()`用于合并字符串列表,`replace()`用于替换子串,`strip()`用于去除两侧的空白字符等。...
在Python编程语言中,常常需要将列表(list)转换为字符串,并且在列表元素之间加入特定的分隔符,以满足输出格式化的需求。本文将详细介绍如何使用Python将list转换成字符串,并在元素之间插入自定义分隔符的方法。...
### Python统计一个字符串中每个字符出现次数的方法 在Python编程中,经常需要处理字符串相关的任务,其中一项常见的需求就是统计一个字符串中每个字符出现的次数。这种方法不仅在文本分析中有广泛应用,也是学习...
Python 拼接字符串、列表和字典 Python源码Python 拼接字符串、列表和字典 Python源码Python 拼接字符串、列表和字典 Python源码Python 拼接字符串、列表和字典 Python源码Python 拼接字符串、列表和字典 Python源码...
总结,字符串转ASCII和ASCII转字符串是编程中常见的操作,主要涉及对字符和其对应的数字表示之间的转换。理解这些概念和实现方式对于理解和处理字符数据至关重要。通过学习不同编程语言中的相关函数和方法,你可以...