Python的len()和填充函数(如string.ljust())不能识别tabstop,即它们将'\ t'视为任何其他单宽度字符,并且不会将len舍入到最接近的tabstop倍数.例:
len('Bear\tnecessities\t')
Run Code Online (Sandbox Code Playgroud)
是17而不是24(即4+(8-4)+11+(8-3))
并说我也想要一个pad_with_tabs(s)这样的功能
pad_with_tabs('Bear', 15) = 'Bear\t\t'
Run Code Online (Sandbox Code Playgroud)
寻找这些的简单实现 - 首先是紧凑性和可读性,效率第二.这是一个基本但令人恼火的问题.@gnibbler - 你能展示一个纯粹的Pythonic解决方案,即使效率低20倍吗?
当然你可以使用str.expandtabs(TABWIDTH)来回转换,但这很笨重.导入数学也变得非常TABWIDTH * int( math.ceil(len(s)*1.0/TABWIDTH) )矫枉过正.
我无法管理比以下更优雅的东西:
TABWIDTH = 8
def pad_with_tabs(s,maxlen):
s_len = len(s)
while s_len < maxlen:
s += '\t'
s_len += TABWIDTH - (s_len % TABWIDTH)
return s
Run Code Online (Sandbox Code Playgroud)
并且由于Python字符串是不可变的,除非我们想将我们的函数修补为字符串模块以将其添加为方法,我们还必须分配给函数的结果:
s = pad_with_tabs(s, ...)
Run Code Online (Sandbox Code Playgroud)
特别是我无法使用list-comprehension或string.join(...)获得干净的方法
''.join([s, '\t' * ntabs])
Run Code Online (Sandbox Code Playgroud)
没有特殊情况下len(s)<TABWIDTH的整数倍,或len(s)> = maxlen的情况.
任何人都可以显示更好的len()和pad_with_tabs()函数吗?
我在Python上遵循了一个很好的例子:将零填充为字符串(4)的最好方法, 但现在我需要将填充的字符串转换为填充整数.
我试过了:
list_padded=['0001101', '1100101', '0011011', '0011011', '1101111',
'0000001', '1110111', 1101111', '0111001', '0011011',
'0011001'] # My padded sting list.
int_list=[int(x) for x in list_padded] # convert the string to an INT
Run Code Online (Sandbox Code Playgroud)
但我得到的是一个没有填充的整数列表.
欣赏任何方向或建议.
非常感谢,杰克
编辑:在得知整数没有填充的启示后,我的想法有点不同,但是解释更多可能是一个好主意:
我正在书中进行基本的加密练习.它给了我一个pseduocode列表 - 获取密码字符串1-127和消息,将两者转换为二进制,剥离0b,并用零填充.然而,它希望我在没有异常的情况下完成剩下的工作!我一次得到那么远的一行,但现在来了(问题开始的地方):
我喜欢使用XOR操作,但我害怕这样做,我不会去学习我需要的东西.
-J
我有一个带有输入字段的Tablecell.Inputfield应填满Tablecell,但不能覆盖其填充.我看起来像这样(用萤火虫):

我希望输入字段保持在蓝色区域内而不是进入紫色区域.
而且:我当然首先阅读了关于这个主题的所有问题.我读了所有这些,但我找不到任何实际解决的答案.
它应该适用于所有现代浏览器(即7);
我用jsfiddle创建了一个最小的实例,其中我在其他问题中尝试了所有解决方案,但我无法让它工作.a)有没有可行的解决方案?和b)是否有一个很好的非解决方案?
为什么这是所有浏览器中的问题?我认为这是CSS中的错误规范.因为如果我说"100%"当然我希望元素符合"内容区域"的"100%".让它流入填充和边距的用例是什么?
这个简单的HTML5布局旨在左侧有一个导航栏,主体文本与它一起浮动(使用百分比而不是像素表示流畅的响应式设计 - 计算在CSS中的注释中.)
http://www.wturrell.co.uk/stackoverflow/20110615-01.html
'page'div中元素的宽度总计达到100%.我想为某些元素添加填充,在本例中为nav.如果我删除所有填充,它们正确浮动,但超过1或2个像素的填充(无论它指定的单位),它会中断.我不明白为什么这会破坏布局,因为它的填充因此肯定不会改变块的整体大小?
我错过了什么?
更新 - 解决方案: http ://www.wturrell.co.uk/stackoverflow/20110615-02.html
(元素显示宽度=宽度加边框加填充.导航应为标称200像素,右侧为20px填充,因此对于流体设计,宽度= 180/900*100或20%,填充= 20/900*100或2.222 %和正文仍为700/900*100或77.777%.)
目前我正在尝试在控制台中打印一些信息,但我试图给所有结果提供相同的填充.
这里有一个例子,你可以看到CurrentBuildNumber结果有一个/ t到多./ t只是将所有内容对齐,它可能是其他任何内容.

所以,我需要一个"固定"填充:[结果].我怎样才能在我的代码中正确执行此操作?
谢谢!
码:
RegistryKey registryKeys = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
foreach (string registryKey in registryKeys.GetValueNames())
{
Console.WriteLine(registryKey + "\t\t: " + registryKeys.GetValue(registryKey));
}
Run Code Online (Sandbox Code Playgroud) 我正在向我的左表格单元格添加填充,但中心和右侧单元格也会获得顶部填充.如何从中心和右侧单元格中删除填充?
中心和右侧细胞仍然是顶部填充.
<!doctype html>
<html>
<head>
<style>
* {
margin: 0;
padding: 0;
}
.left, .center, .right {
display: table-cell;
width: 100px;
height: 50px;
}
.center, .right {
display: table-cell;
width: 100px;
padding: 0;
}
.left {
padding: 10px;
background: yellow;
}
.center {
background: pink;
}
.right {
background: orange;
}
</style>
</head>
<body>
<div class="left">a</div>
<div class="center">b</div>
<div class="right">c</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我想将结构数据输出到二进制文件,但每个变量的信息之间没有任何填充位.例如:
struct s {
int i1;
short s1;
char c1;
};
struct s example[2];
Run Code Online (Sandbox Code Playgroud)
如果我使用fwrite(&example, sizeof(struct s), 2, file)的二进制文件仍然之间,例如,填充比特s1和c1,也从c1到i1 (of the 2nd struct).
从输出文件中删除这些填充位的好方法是什么?
谢谢!任何帮助表示赞赏
问)我有以下页面网格结构,我想删除所有内容的填充,以便它不是那么大.有没有一种很好的方法来做到这一点,不会破坏所有的Ionic风格的开箱即用?
这是结构:
<ion-content>
<ion-row baseline>
<ion-col width-90>
<ion-item>
<ion-label stacked>Email</ion-label>
<ion-input type="text"></ion-input>
</ion-item>
</ion-col>
<ion-col width-10>
<ion-icon name='more'></ion-icon>
</ion-col>
</ion-row>
<ion-row baseline>
<ion-col width-90>
<ion-item>
<ion-label stacked>Floor</ion-label>
<ion-select item-right>
<ion-option value="nes">NES</ion-option>
<ion-option value="n64">Nintendo64</ion-option>
<ion-option value="ps">PlayStation</ion-option>
<ion-option value="genesis">Sega Genesis</ion-option>
<ion-option value="saturn">Sega Saturn</ion-option>
<ion-option value="snes">SNES</ion-option>
</ion-select>
</ion-item>
</ion-col>
<ion-col width-10>
<ion-icon name='more'></ion-icon>
</ion-col>
</ion-row>
</ion-content>
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
谢谢.
在amd64上,以下结构的大小为16个字节:
typedef struct _my_struct {
void *a;
UINT32 b;
UINT16 c;
UINT8 d;
UINT8 e;
} my_struct;
Run Code Online (Sandbox Code Playgroud)
但是当我把前三个变量放在一个联合中时,大小变为24.为什么?
typedef struct _my_struct {
union {
struct {
void *a;
UINT32 b;
UINT16 c;
} my_inner;
struct {
void **f;
} my_inner2;
}
UINT8 d;
UINT8 e;
} my_struct;
Run Code Online (Sandbox Code Playgroud)