输出字符串中的前100个字符


108

似乎可以在python中找到子字符串函数。

假设我要输出字符串中的前100个字符,该怎么办?

我也想安全地进行操作,测量字符串是否为50个字符,它应该不会失败。


2
这个问题的后续内容是:Python切片符号的良好入门
Greg Hewgill,2010年

1
“字符”是什么意思?代码点,字素簇或代码单元?切片将计算代码单位,这可能无法获得理想的结果。
菲利普

Answers:


168
print my_string[0:100]

5
例如,它也适用于短于100的字符串print 'foo'[:100](请注意,它len('foo')是3,所以即使foo[100]不起作用,它也会起作用)
Rodrigo Laguna

67

python教程

退化的切片索引得到了很好的处理:太大的索引将替换为字符串大小,上限小于下限的字符串将返回一个空字符串。

因此使用安全x[:100]



7

为了回答Philipp的担忧(在评论中),对于unicode字符串也可以切片

>>> greek=u"αβγδεζηθικλμνξοπρςστυφχψω"
>>> print len(greek)
25
>>> print greek[:10]
αβγδεζηθικ

如果您想将以上代码作为脚本运行,请将此行放在顶部

# -*- coding: utf-8 -*-

如果您的编辑器未保存为utf-8,请替换为正确的编码


2
没有贬低您的答案,但是只有一个24个希腊字母,ς并且σ是相同的字母:-)
paxdiablo 2010年

4
@paxdiablo,do!我将它们从Wikipedia页面复制了下来。幸运的是,我当时没有给变量命名greek_alphabet:)
John La Rooy

4

数组的切片是通过进行的[first:last+1]

我倾向于使用很多技巧之一是用省略号指示额外的信息。因此,如果您的字段是一百个字符,我将使用:

if len(s) <= 100:
    print s
else:
    print "%s..."%(s[:97])

是的,我知道()在这种情况下对于%格式化运算符是多余的,这只是我的风格。


我想这是值得深思的,但是在OP的情况下,我可能不建议这样做。结果将是一个字符串,您将必须检查该字符串以查找要进一步裁剪的内容或类似内容。在这种情况下,我会想象一个人要么希望该数字是可变的,并且结果始终是正确的,要么希望该数字是固定的,并且处理会产生有意义的结果,或者出错或在失败的情况下优雅地返回。除了提供人类可读的信息外,我想不出许多情况,在这些情况下,我想在字符串中任意添加文本。

3

如果您的字符串不够长,大多数前面的示例都会引发异常。

另一种方法是使用 'yourstring'.ljust(100)[:100].strip()

这将给您前100个字符。如果您的字符串的最后一个字符为空格,则可能会得到较短的字符串。


谢谢。奇怪的是,为什么关于stackoverflow的最佳答案却不容易得到认可和支持。
罗勒·穆萨

3

使用字符串格式化%是解决此问题的好方法。这里有些例子。

格式代码'%s'将转换'12345'为字符串,但是已经是字符串。

>>> '%s' % '12345'

'12345'

'%.3s' 指定仅使用前三个字符。

>>> '%.3s' % '12345'

'123'

'%.7s'说要使用前七个字符,但只有五个。没问题。

>>> '%.7s' % '12345'

'12345'

'%7s' 最多使用七个字符,用左侧的空格填充缺少的字符。

>>> '%7s' % '12345'

'  12345'

'%-7s' 是一样的事情,除了在右边填充丢失的字符。

>>> '%-7s' % '12345'

'12345  '

'%5.3' 表示使用前三个字符,但在左侧填充空格以总计五个字符。

>>> '%5.3s' % '12345'

'  123'

除了在右边填充之外,其他内容相同。

>>> '%-5.3s' % '12345'

'123  '

也可以处理多个参数!

>>> 'do u no %-4.3sda%3.2s wae' % ('12345', 6789)

'do u no 123 da 67 wae'

如果您需要更大的灵活性,str.format()也可以使用。这是两者的文档


0
[start:stop:step]

因此,如果您只想使用100个第一个字符,请使用your_string[0:100]your_string[:100] 如果只想在偶数位置使用your_string[::2] 该字符,请使用“默认值”,以start为0,stop-字符串len,以及step-1。当您不提供其中之一并在其中加上“:”时,它将使用其默认值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.