繁体   English   中英

如何使用python仅打印一行中的某些字符

[英]How to print only certain characters from a line using python

例如,我有:

a = (b ^ c) || d && e

我只想打印

^ || &&  

我是python的新手。 有人可以帮我解决这个问题吗?

我们可以过滤掉与不想要的字符filter

>>> a = "(b ^ c) || d && e"
>>> print(*filter(lambda x: not x.isalpha() and x not in '()', a), sep='')
 ^  ||  &&

或者,如果您不想要多个空格或前导/尾随空格:

>>> print(''.join(filter(lambda x: not x.isalpha() and x not in '()', a)).replace('  ',' ').strip())
^ || &&

您可以按不需要的字符组拆分字符串,然后继续连接和去除空间:

' '.join(re.split(r'[\s\d\w()]+', a)).strip() # remove numbers, letters, and whitespace

编辑1

为了纠正误解,我建议为此使用正则表达式。

import re
print(re.sub(r"[^\^|\|\||\&\&]", "", a))

编辑2

上面代码的注释。

re.sub()函数用第二个参数替换所有匹配给定模式的标记。 您可以在此处通过regexone.com 的快速培训

这部分代码使用给定的正则表达式查找您的所有符号,并用空字符串替换它们。

r"[^\^|\|\||\&\&]"

该正则表达式有以下部分

[^] - 告诉查找所有不在 [ 和 ] 之间的符号。 ^ 用于否定的符号。

\\^\\^ - 您的 ^^ 符号使用反斜杠屏蔽

\\|\\| - 你的 || 符号

\\&\\& - 你的 && 符号

所有这些都使用“或”语句(“|”符号)分组

最后你有

^^ | || | && 没有反斜杠告诉,找到 ^^ 或 || 或者 &&

并在 [^ ^^ | || | &&],找出所有不是 ^^ 或 || 的符号或者 &&

但是如果你是第一次编码,或者你还不知道 python 语法,我建议你只在最简单的例子中学习 python,然后学习正则表达式语法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM