我正在尝试在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