python对比字符串是否一样-Python比较两个相同的字符串返回false

我将在下面列出一些代码来解释这个问题,但基本上我要做的是在一个函数中进行比较——一个字符串和一个只包含该字符串的行。

我有以下清单:

1org_tasks = ["general_static ", "host_general_static ",etc....]

传递给函数的文件名(python文件)

1

2

3

4

5

6

7my_dict = createDictFromTaskList(ref_ver, org_tasks)

def createDictFromTaskList(prm_fl,tasks_list):

final_dict = {}

for task in tasks_list:

print getTransformedDic(prm_fl, str("CurrentTaskParams." + task))

return final_dict

电话:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45def getTransformedDic(prm_fl,dic_name): # transforms string to dictionary

"turns dictionary values from type variable into a string"

newDic =""

dicToChange = getOldDicAsString(prm_fl,dic_name)

if dicToChange is None: return None

dicToChange = dicToChange[len(dic_name) + 3:] #here i get none for some reason

dicToChange = dicToChange.replace(""",""")

for line in dicToChange.splitlines():

transformedLine = "".join(line.split())

transformedLine = transformedLine.strip()

if transformedLine.startswith("#"): continue

IsLineBelongsToDic = transformedLine.split(":")

if len(IsLineBelongsToDic) > 1:

if transformedLine[-1:] ==",":

valueAsString = ""%s"," % transformedLine[len(IsLineBelongsToDic[0]) + 1:-1]

else:

valueAsString = ""%s"," % transformedLine[len(IsLineBelongsToDic[0]) + 1:]

line = " " + IsLineBelongsToDic[0] + " : " + valueAsString

newDic += "%s" % line + "

"

try:

value = ast.literal_eval(newDic[:-1])

except SyntaxError:

return None

else:

return value

def getOldDicAsString(prm_fl, dic_name):

"return a string that contains dictionary"

with open(prm_fl) as f:

file_data = f.read()

recordLines = False

dictionary =""

for line in file_data.splitlines():

transformedLine = "".join(line.split())

transformedLine = transformedLine.strip()

taskName = transformedLine.split("=")[0]

print taskName ,dic_name # here i can see they are the same

if taskName == dic_name or recordLines:

recordLines = True

dictionary += line + "

"

if transformedLine =="}":

return dictionary

我使用的文件如下(根据我之前提到的列表):

1

2

3

4

5

6

7

8...

CurrentTaskParams.general_static = {

"is_enable" : "true"

}

CurrentTaskParams.host_general_static = {

"is_enable" : "true"

}

...

加了几张照片后,我就看到了

CurrentTaskParams.general_static

-->作为参数传递

到包含此字符串的行(在从空格中剥离后)我不追加字典字符串(意思是我的"if"返回false)

任何帮助都很好,谢谢!

有了一个最少的例子和一个更简洁的问题,就更容易得到答案。我建议你编辑这个问题,使它更简单

当recordLines总是False时,if taskName == dic_name or recordLines:的目的是什么?

您的脚本中是否也存在org_tasks列表字符串末尾的空格,或者只是这篇文章中的一个错误?您应该删除它,因为您要删除文件行中的所有空格

下面的最小示例复制源数据和代码块:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16file_data ="""

CurrentTaskParams.general_static = {

"is_enable" : "true"

}

CurrentTaskParams.host_general_static = {

"is_enable" : "true"

}

"""

dic_name = "CurrentTaskParams.general_static"

for line in file_data.splitlines():

transformedLine = "".join(line.split())

transformedLine = transformedLine.strip()

taskName = transformedLine.split("=")[0]

print(""%s"" % taskName,""%s"" % dic_name, taskName == dic_name)

运行此命令,它将正确地拾取相关行:

1

2

3

4

5

6

7"" "CurrentTaskParams.general_static" False

"CurrentTaskParams.general_static" "CurrentTaskParams.general_static" True

""is_enable":"true"" "CurrentTaskParams.general_static" False

"}" "CurrentTaskParams.general_static" False

"CurrentTaskParams.host_general_static" "CurrentTaskParams.general_static" False

""is_enable":"true"" "CurrentTaskParams.general_static" False

"}" "CurrentTaskParams.general_static" False

通过一个工作示例,很难调试问题!!)但我怀疑这意味着问题出在别的地方。

在您的示例代码中,您列出了带有尾随空格的组织任务,这是有意的吗?

1org_tasks = ["general_static ", "host_general_static ",etc....]

我建议您尝试打印您认为匹配但用引号括起来的数据(见上文),因为这将有助于更好地突出显示字符串中的任何前导/尾随空格。

事实上,空间不应该存在,移除后-问题解决!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值