我正在尝试创建一个if语句,该语句可以区分列表中的两个字符串,唯一的区别是它们前面的空白量。
由于某种原因,我无法使用其中的任何一个。
with open(os.path.dirname(os.path.realpath(__file__)) + "\defaults\handling.meta") as file:
contents = file.readlines()
for index, item in enumerate(contents):
if (" </Item>" in item) and (index > old_start_lines[0]):
这不能区分
</Item>
(8个空格)和
</Item>
(4个空格)。像这样添加长度检查会产生错误:
and (len(contents[index]) == 11):
这另外两个检查也分别导致未区别的结果和相同的错误。
if (item.startswith(" </Item>")) and (index > old_start_lines[0]):
if (" </Item>" == item) and (index > old_start_lines[0]):
错误是:
IndexError:列表索引超出范围
以下是我正在处理的文本文件->列表的示例:https://pastebin.com/Vr87UXHF
谢谢
Alfie
编辑:完整项目-https://drive.google.com/file/d/1hcs1zkAu5xBWJYhZ97UXUcEkPdo-yQ4m/view?usp=sharing
答案 0 :(得分:0)
一种简单的解决方法是在输入字符串的左侧去除空格:
if ("</Item>" in item.lstrip())
您还可以使用.strip()或.rstrip(),请参见https://docs.python.org/2/library/string.html#string.lstrip
答案 1 :(得分:0)
您需要使用Python的re来使空格与正则表达式完全匹配。
import re
with open('FilePath') as file:
contents = file.readlines()
regex = re.compile(r"^\s{8}<\/Item>")
#for 4 spaces you can replace 8 with 4
for index, item in enumerate(contents):
if (bool(regex.search(item))):
print (item)
print('</Item> with 8 spaces')
输出:
</Item>
</Item> with 8 spaces