问题描述
我现在要使用 instr()在终端的一行中检索多个字符串,但这仅在该确切位置提取字符串。真正应该执行此操作的函数是 inchstr(),但似乎在python中不起作用还是对?
解决方法
不。 Python的curses绑定不会扩展底层的curses库(很多)。 python可能会使用多个相关的curses函数,具体取决于您所查看的内容,但是没有一个函数会读取一行以上的文字:
-
int instr(
char*str);
-
int inwstr(
wchar_t*wstr);
-
int inchstr(
chtype*chstr);
-
int in_wchstr(
cchar_t*wchstr);
第一个(instr
)和第三个(inchstr
)都从屏幕上读取,但是后者返回属性(颜色,下划线等)以及文本
Python的instr
似乎使用前者,因为其文档说明了
返回一个字符的字节对象,该对象从窗口中提取,从当前光标位置开始,或者从 y , x (如果指定)开始。 从字符中剥离。如果指定了 n ,则
instr()
最多返回一个字符串 n 个字符长(不包括结尾的NUL
)。
第二个(inwstr
)和第四个(in_wchstr
)通过允许直接读取宽字符而不同于其他两个。 python实际上应该提供使用set(窄或宽字符接口)的方法,因为ncurses的宽字符接口更适合返回Unicode字符串,但是无论哪种情况,它都使用窄接口,返回字节数组(并要求使用应用程序以弄清楚如何将数据转换为字符串)。