在Python中,相同的字符串给出不同的结果

2024-04-20 11:40:02 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在this post中使用方法 从字符串中提取双引号字符串。如果输入字符串来自终端参数,则可以正常工作。但是,如果输入字符串来自如下所示的txt文件,则会出现非类型错误。我试图得到两个字符串(一个来自文件,一个来自终端)的哈希代码,结果发现它们是不同的。我很好奇有没有人知道怎么解决这个问题?(在Python 3.x中)

也就是说,我已经在代码中将默认编码设置为“utf-8”。你知道吗

python filename.py < input.txt

Tags: 文件方法字符串代码txt终端类型编码
3条回答

如果您使用的是命令python,那么命令会将其识别为python2.x

如果需要python3.x,只需将命令更改为python3 像这样

python3 filename.py < input.txt

我刚想出来,这个bug不是来自我的代码。我在Mac上启用了“智能引号”,所以每当它读取引号时,它都会被标识为一个特殊字符。在键盘下禁用此设置可以实现此目的。你知道吗

哈哈,真是个“虫子”。你知道吗

有两件事,如果您想将一个txt文件摄取到python脚本中,您需要指定它。把这两行加起来

import sys
text = str(sys.argv[1])

这意味着文本就是你的'input.txt'。你知道吗

第二,如果你的脚本只有一个函数,它不会知道你想用这个函数做什么,你也必须明确地告诉脚本通过entry main来执行这个函数

import re
import sys
def doit(text):      
  matches=re.findall(r'\"(.+?)\"',text)
  # matches is now ['String 1', 'String 2', 'String3']
  return ",".join(matches)

if __name__ == '__main__':
   text_file = str(sys.argv[1])
   text = open(text_file).read()
   print(doit(text))

或者,您可以逐行执行,而不必将re包装到函数中,因为re只有一行。你知道吗

相关问题 更多 >