【问题标题】:urdu strings looking same but in comparison found unequal python3urdu 字符串看起来相同,但相比之下发现不相等的 python3
【发布时间】:2018-10-06 14:31:32
【问题描述】:

在我的应用程序中,我在文本文件中列出了(乌尔都语)单词,(目前是这样的单个单词)

我还有另一个包含 urdu 字符串的文本文件(目前是这样的单个单词并且完全相同)

现在我需要查找字符串文件的字符串是否包含单词文件中存在的任何单词。为此,我将这两个文件都读入这样的列表中;

// 读取字符串的文本文件...

fileToRead = codecs.open('string.txt', mode, encoding=encoding)
fileData = fileToRead.read()
lstFileData = fileData.split('\n')


wordListToRead = codecs.open('words.txt', mode, encoding=encoding)
wordData = wordListToRead.read()
lstWords = wordData.split('\n')

我只是像这样遍历列表;

for string in lstFileData:
    if string in lstWords:
        // do further work

它不工作而且我不知道为什么?虽然字符串是 'فلسفے' 并且 lstWords 中有这个字符串。我需要添加一些编码吗?任何形式的帮助将不胜感激。

【问题讨论】:

  • 它应该可以正常工作,您最好添加更多代码
  • 好的,让我详细补充一下。
  • 请检查更新的问题

标签: python python-3.x unicode utf-8 urdu


【解决方案1】:

刚刚在 python3 中尝试过,它似乎对我有用:

lstWords = ['a', 'فلسفے', 'b']
string = 'فلسفے'
if string in lstWords:
    print("yes")

编辑:再次,刚刚使用文件 IO 测试了您更新的代码,它工作正常(我没有指定编码)。这是它的工作链接:https://trinket.io/python3/3890d8b261

【讨论】:

  • 是的,它是完全一样的东西,它被认为可以工作,但事实并非如此。
  • 我认为还有其他事情发生。查看我更新的答案中的链接,看看代码在 python3 中运行良好。
  • 是的.. 问题在文件中。我在记事本中打开它并更新了..这个东西将它从 utf-8 更改为 utf-8 BOM。我猜那是个问题。一旦我在记事本++中创建了新文件并将其保存为utf-8。相同的代码开始正常工作。
【解决方案2】:

也许它帮助了像我这样的人

虽然听起来很有趣,但问题出现在file encoding type。我在简单的记事本中打开文件进行一些更改并保存它。它将我的文件从utf-8 更改为utf-8 BOM。而且我的代码不起作用。一旦我在 utf-8 中的 notepad++ 中创建了新文件,相同的代码就开始正常工作了。 (因为问题不在代码中,而是在文件编码中)

【讨论】:

  • 它可能会对未来的读者有所帮助,但目前的非常具体的标题不太可能找到它;考虑将其更改为更通用的内容,例如“看起来相同的字符串比较不相等”或类似的。顺便说一句:使用 UTF8 BOM 打开文件的正确编码在 Python 中称为“utf-8-sig”。否则(如果您使用“utf-8”解码)BOM 字符将粘在内容的开头。
猜你喜欢
  • 2017-07-31
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 2019-05-20
相关资源
最近更新 更多