如何检查解析行中的字符是否是 python 中字符串变量的一部分



我正在尝试在python中实现一个函数,该函数检查解析行中的"#"符号是否是字符串变量的一部分。

def comment_part_of_string(line,comment_idx):
"""
:param line: stripped line that has '#' symbol
comment_idx: index of '#' symbol in line
:return: return True when the '#' symbol is inside a string variable
"""

例如,我希望函数为以下对象返回 True:

> line="peace'and#much'love"
> comment_idx=line.find('#')

和假表示:

> line="peace#love"
> comment_idx=line.find('#')

如何检查解析行中的字符是否是字符串变量的一部分?

编辑我试过这个,它也起作用了:

def comment_part_of_string(line, comment_idx):
"""
:param comment_idx: index of '#' symbol in line
:param line: stripped line that has '#' symbol
:return: return True when the '#' symbol is inside a string variable
"""
if ((line[:comment_idx].count(b"'") % 2 == 1 and line[comment_idx:].count(b"'") % 2 == 1)
or (line[:comment_idx].count(b""") % 2 == 1 and line[comment_idx:].count(b""") % 2 == 1)):
return True
return False

您可以通过检查#符号前的单引号('( 的数量来做到这一点。如果它是偶数,则意味着它在字符串文字之外,如果它是奇数,则它在字符串内。这样做:

def comment_part_of_string(line, comment_idx):
"""
:param line: stripped line that has '#' symbol
comment_idx: index of '#' symbol in line
:return: return True when the '#' symbol is inside a string variable
"""
count = line.split(line[comment_idx])[0].count("'")
if(count % 2):
return True
else:
return False

希望这对:)有所帮助

我认为这应该有效

def iscomment(line):
line = line.split(" ")
for i in line:
if "#" in i:
if '"' in i or "'" in i:
return True
return False

它为空格拆分行,然后遍历行的一部分,如果它找到 ' 或 " 和 # 行,则返回 True。

这可以使用正则表达式解决。
注意:字符串可以位于 ' 或 " 内。所以也必须考虑到这一点。

import re
def comment_part_of_string(line):
pattern=r''.*#.*'|".*#.*"'
if re.findall(pattern,line):
return True
return False

输出:

>>> comment_part_of_string("peace'and#much'love")
True
>>> comment_part_of_string("peace#love")
False
>>> comment_part_of_string('peace"and#much"love')
True    

相关内容

  • 没有找到相关文章

最新更新