Python中文
首页
教程
问答
标签
搜索
登录
注册
python修改的打印函数
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我列出了5个表示标记(词汇类)的列表——标识符、常量、运算符、关键字和分隔符</p> <p>从.txt文件中读取,我将文件元素排序到列表中</p> <p>我的.txt文件</p> <pre><code>a273 = 4 + 1337 variable = 50.123132123 + 3.123123132 / 23.121212 </code></pre> <p>a273被追加到标识符“”中,“\n”被追加到分隔符中,=被追加到运算符中,4和1337被追加到常量中,+被追加到运算符中。(下一行相同)</p> <p>所以我想做一个修改后的打印函数,它可以像这样打印我的元素:</p> <pre><code>('a273', identifiers) (' ', separators) ('=', operators) (' ', separators) ('4', constants) (' ', separators) ('+', operators) (' ', separators) ('1337', constants) </code></pre> <p>所有行都这样打印</p> <p>我尝试了类似的方法(仅用于标识符)</p> <pre><code>for i in newList: if i in identifiers: print(i, " identifiers") </code></pre> <p>但我打印了多个相同的标识符</p> <p>这是我对分隔符、标识符和常量进行排序的代码</p> <pre><code>lexicalClass = file.readlines() for lex in lexicalClass: if len(re.findall('\s+', lex)): separators.extend(re.findall('\s+', lex)) a_string = lex.split() for word in a_string: if len(re.findall(r"\b(?!S+)[+-]? *(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]? \d+)?\b(?!S+)", word)): constants.extend(re.findall(r"\b(?!S+)[+-]? *(?:\d+(?:\.\d*)?|\.\d+) (?:[eE][+-]?\d+)?\b(?!S+)", word)) newList = re.findall('\S+', lex) for element in newList: if len(re.findall('[a-z]+[0-9]+|[a-z]+', element)): identifiers.extend(re.findall('[a-z]+[0-9]+|[a-z]+', element)) </code></pre> <p>编辑:</p> <p>我添加了以下代码:</p> <pre><code>tokens = identifiers.copy() tokens.extend(operators) tokens.extend(separators) tokens.extend(keywords) tokens.extend(constants) for i in range(len(lexicalClass) - 1): print(f'Line {i}: ') for element in tokens: if element in operators: print({element}, 'operators') elif element in identifiers: print({element}, 'identifers') elif element in separators: print({element}, 'identifers') print("\n") </code></pre> <p>但是我得到了这个输出</p> <pre><code>Line 0: {'a273'} identifers {'i'} identifers {'aifj'} identifers {'variable'} identifers {'+'} operators {'+'} operators {'++'} operators {'/'} operators {'='} operators {'='} operators {' '} separators {' '} separators {' '} separators {' '} separators {'\n'} separators {' '} separators {' '} separators {' '} separators {' '} separators {' '} separators {'\n'} separators {' '} separators {' '} separators {' '} separators {' '} separators {' '} separators {' '} separators {'\n'} separators Line 1: {'a273'} identifers {'i'} identifers {'aifj'} identifers {'variable'} identifers {'+'} operators {'+'} operators {'++'} operators {'/'} operators {'='} operators {'='} operators {' '} separators {' '} separators {' '} separators {' '} separators {'\n'} separators {' '} separators {' '} separators {' '} separators {' '} separators {' '} separators {'\n'} separators {' '} separators {' '} separators {' '} separators {' '} separators {' '} separators {' '} separators {'\n'} separators </code></pre> <p>我想一行一行地打印它的元素,但我要在每一行打印整个文件,而且元素也没有排序(所有标识符都是先打印的,然后是运算符…)</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您可以利用python中的<code>set</code>概念</p> <pre><code>s = set(newList) for i in s: if i in identifiers: print(i, " identifiers") </code></pre> <p>在这里,列表中的所有唯一元素都将添加到集合中。因此,这将删除输出中的重复值</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
文本导入时标题行中的特殊字符
8 回答
文本小部件:在没有输入时更新并在循环后保持空闲
7 回答
文本小部件tkin
1 回答
文本小部件tkinter中的标签更改或文本外观更改是否有撤消功能?
3 回答
文本小部件tkinter复制图像选项
8 回答
文本小部件上的Python Tkinter ttk滚动条未缩放
10 回答
文本小部件上的滚动条可能需要根据制表符ord显示前进行滚动
6 回答
文本小部件不显示lis中的内容
4 回答
文本小部件不显示Unicode字符
1 回答
文本小部件中写入的行间距
4 回答
文本小部件中的文本作为变量
3 回答
文本小部件中的滚动条仅显示在底部
6 回答
文本小部件中的选项卡键空间计数
3 回答
文本小部件作为Lis
3 回答
文本小部件在主框架中扩展列宽
6 回答
文本小部件未使用删除功能清除
9 回答
文本小部件滚动动画(Tkinter、Python)
4 回答
文本居中。格式正确吗?
2 回答
文本差分算法
5 回答
文本已知时音频文件中的单词索引
10 回答