我有一个像这样的正则表达式:
regexp = u'ba[r|z|d]'
Run Code Online (Sandbox Code Playgroud)
如果单词包含bar,baz或bad,则函数必须返回True .简而言之,我需要用于Python的正则表达式模拟
'any-string' in 'text'
Run Code Online (Sandbox Code Playgroud)
我怎么才能意识到这一点?谢谢!
我在Python中有这样的列表:[1,0,0,0,0,0,0,0]
.我可以将它转换为整数,就像我输入0b10000000(即转换为128)一样吗?我还需要将序列转换[1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0]
为整数(这里它将返回0b1100000010000000,即259).如果有必要,列表长度始终是8的倍数.
我已经问过这个问题,但那是关于FreeImage
.现在我正在尝试做同样的事情ImageMagick
(更正确,有Magick++
).
我需要的是获得图像中像素的RGB值,并能够将其打印到屏幕上.我在ImageMagick
论坛上问了这个,但似乎没有人在那里.:-(有人可以帮帮忙吗?
我需要获取数组中的字符数.
const char myarray[5] = {'0', 'a', 'e', 'f', 'c'}; // Create array of char
int number=0; // Create variable
number = getposition(myarray, 'f'); // Now number equals to 3
number = getposition(myarray, 'z'); // -1, because array doesn't have this char
Run Code Online (Sandbox Code Playgroud)
我的任务很简单,因为数组没有重复的字符(例如,它不能像这样:{'a','1','f','a'}).我该怎么做?
我正在尝试从Boost Gzip过滤器页面编译示例:
#include <fstream>
#include <iostream>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/gzip.hpp>
int main()
{
using namespace std;
ifstream file("hello.gz", ios_base::in | ios_base::binary);
filtering_streambuf<input> in;
in.push(gzip_decompressor());
in.push(file);
boost::iostreams::copy(in, cout);
}
Run Code Online (Sandbox Code Playgroud)
可悲的是,我的g ++返回错误:
gzlib.cpp: In function ‘int main()’:
gzlib.cpp:12:3: error: ‘filtering_streambuf’ was not declared in this scope
gzlib.cpp:12:23: error: ‘input’ was not declared in this scope
gzlib.cpp:12:30: error: ‘in’ was not declared in this scope
gzlib.cpp:13:29: error: ‘gzip_decompressor’ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)
这个函数有什么问题以及如何修改它以使其工作?非常感谢!
链接到Boost Gzip过滤器:http://www.boost.org/doc/libs/release/libs/iostreams/doc/classes/gzip.html
我有三个类:ConsoleInputStream
,ConsoleOutputStream
,ConsoleErrorStream
.所有这些都源于Stream
.
每个流有虚函数read
和write
; 你猜,当用户尝试使用ConsoleInputStream
的write
成员函数,它抛出一个错误.当用户试图使用同样的情况ConsoleOutputStream
的write
功能.
现在是时候展示代码了.
// STREAM.HPP
namespace streamlib {
extern ConsoleInputStream stdin_default;
extern ConsoleOutputStream stdout_default;
extern ConsoleErrorStream stderr_default;
extern Stream& stdin;
extern Stream& stdout;
extern Stream& stderr;
} // namespace streamlib
// STREAM.CPP
namespace streamlib {
ConsoleInputStream stdin_default;
ConsoleOutputStream stdout_default;
ConsoleErrorStream stderr_default;
Stream& stdin = stdin_default;
Stream& stdout = stdout_default;
Stream& stderr = stderr_default;
} // namespace streamlib
// MAIN.CPP …
Run Code Online (Sandbox Code Playgroud) 我想请你帮忙.
我有一大块数据,看起来像这样:
a
b : c 901
d : e sda
v
w : x ads
any
abc : def 12132
ghi : jkl dasf
mno : pqr fas
stu : vwx utu
Run Code Online (Sandbox Code Playgroud)
说明:文件以包含单个单词的行开头(它可以以空格开头,空格也可以在单词后面),然后跟随冒号分隔的属性行(也可以有空格),然后是属性行或行与一个字.我无法创建正确的正则表达式以这种形式捕获它:
{
"a": [["b": "c 901"], ["d", "e sda"]],
"v": [["w", "x ads"]],
"any": ["abc", "def 12132"], ["ghi", "jkl dasf"],
# etc.
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
regex = str()
regex += "^(?:(?:\\s*)(.*?)(?:\\s*))$",
regex += "(?:(?:^(?:\\s*)(.*?)(?:\\s*):(?:\\s*)(.*?)(?:\\s*))$)*$"
pattern = re.compile(regex, re.S | re.M)
Run Code Online (Sandbox Code Playgroud)
但是,它找不到我需要的东西.你可以帮帮我吗?我知道我可以在没有正则表达式的情况下处理文件,使用逐行迭代器并检查":"符号,但是文件太大而无法以这种方式处理它(如果你知道如何在没有正则表达式的情况下快速处理它,这也将是正确答案,但首先想到的是太慢了).
提前致谢!
PS在规范形式的文件中看起来像这样:
a
b : …
Run Code Online (Sandbox Code Playgroud) 我正在尝试了解如何创建二进制PBM/PGM/PPM文件.据我所知,每种格式有两种类型:普通格式和原始格式.例如,黑色PBM 5x5的结构如下所示:
P1
# This is a comment
5 5
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
所以你看它很简单:白色是0,黑色是1.但是,PBM有原始版本,如下所示:
'P4\n# This is a comment\n5 5\n\xf8\xf8\xf8\xf8\xf8'
Run Code Online (Sandbox Code Playgroud)
我该怎么做?PBM格式的描述说:
A raster of Height rows, in order from top to bottom. Each row is Width bits, packed 8 to a byte, with don't care bits to fill out the last byte in the row. Each bit represents …
我正在尝试从QtGui.QPushButton对象列表创建一个简单的键盘。
class XKeyboard(QtGui.QWidget):
'''Special virtual keyboard for any language.'''
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.MainLayout = QtGui.QVBoxLayout()
self.TextEntry = QtGui.QTextEdit()
self.Keyboard = QtGui.QVBoxLayout()
self.MainLayout.addWidget(self.TextEntry)
self.MainLayout.addLayout(self.Keyboard)
self.setLayout(self.MainLayout)
def addRow(self, keys):
layout = QtGui.QHBoxLayout()
buttons = [QtGui.QPushButton(unicode(key)) for key in keys]
for button in buttons:
key = keys[buttons.index(button)]
layout.addWidget(button)
button.clicked.connect(
lambda key: self.keyClick(key))
self.keyClick(key)
self.Keyboard.addLayout(layout)
def keyClick(self, key):
self.TextEntry.insertPlainText(key)
Run Code Online (Sandbox Code Playgroud)
问题是lambda返回False
而不是键。我究竟做错了什么?
此代码取自理查德史蒂文斯撰写的UNIX环境中的第3版高级编程.这是如何制作可重入版本的示例getenv()
.这里只是为了学习目的.
/* Copyright (c) W.R.Stevens */
#include <string.h>
#include <errno.h>
#include <pthread.h>
#include <stdlib.h>
extern char **environ;
pthread_mutex_t env_mutex;
static pthread_once_t init_done = PTHREAD_ONCE_INIT;
static void
thread_init(void)
{
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
pthread_mutex_init(&env_mutex, &attr);
pthread_mutexattr_destroy(&attr);
}
int
getenv_r(const char *name, char *buf, int buflen)
{
int i, len, olen;
pthread_once(&init_done, thread_init);
len = strlen(name);
pthread_mutex_lock(&env_mutex);
for (i = 0; environ[i] != NULL; i++) {
if ((strncmp(name, environ[i], len) == 0) &&
(environ[i][len] == '=')) {
olen = …
Run Code Online (Sandbox Code Playgroud)