我是新手,我敢肯定过去有人问过类似的问题,但我无法找到/理解答案。提前感谢您对我的耐心!
因此,我正在尝试编写一个脚本来读取 utf-8 编码的输入文件中的行,将其部分内容与用户传入的可选命令行参数进行比较,如果匹配,则对该行执行一些操作在将其打印到输出文件之前。我codecs
用来打开文件。
我现在正在使用该argparse
模块来解析命令行参数。文件中的行可以是各种语言,因此命令行参数也需要是 utf-8。
例如:
文件中的一行可能如下所示:
разъедают {. r ax z . j je . d ax1 . ju t .}
该脚本应从命令行调用,如下所示:
>python myscript.py mytextfile.txt -grapheme ъ
这是我的代码中应该进行处理的部分。在这种情况下,orth
是一些西里尔文字并且grapheme
是西里尔字符。
def process_orth(orth, grapheme):
grapheme = grapheme.decode(sys.stdin.encoding).encode('utf-8')
if (grapheme in orth):
print 'success, your grapheme was: ' + grapheme.encode('utf-8')
return True
else:
print 'failure, your grapheme was: ' + grapheme.encode('utf-8')
return False
不幸的是,即使字形肯定存在,该函数也会返回 false 并打印一个问号而不是字形:
failure, your grapheme was: ?
根据我阅读的其他帖子的建议,我尝试在开头添加以下process_orth()
内容,但它似乎不起作用:
grapheme.decode(sys.stdin.encoding).encode('utf-8')
所以我的问题是...
如何通过命令行将 utf-8 字符串传递到 python 脚本中?此外,在 Windows7 上是否有任何额外的怪癖(并且安装 cygwin 是否会改变任何东西)?