打印字符串的一部分

时间:2013-04-14 17:39:19

标签: python

我有一个字符串:

"apples = green"

我如何打印:

  1. 在'='(苹果)之前打印所有内容

  2. 在'='(绿色)

  3. 之后打印所有内容
  4. 指定文本文件中的字符串数。我有.txt文件,其中包含:

    apples = green
    lemons = yellow
    ... = ...
    ... = ...
    

2 个答案:

答案 0 :(得分:6)

  1. 使用.split()分割字符串:

    print astring.split(' = ', 1)[0]
    
  2. 仍然使用.split()分割字符串:

    print astring.split(' = ', 1)[1]
    

    或者,您可以使用.partition() method

    >>> astring = "apples = green"
    >>> print astring.split(' = ', 1)
    ['apples', 'green']
    >>> print astring.partition(' = ')
    ('apples', ' = ', 'green')
    

    分区始终只会拆分一次,但也会返回您拆分的字符。

  3. 如果您需要读取文件中的特定行,请首先通过迭代文件对象来跳过行。 itertools.islice() function是返回该行的最紧凑方式;如果你不明白这一切是如何运作的,不要太担心。如果文件没有那么多行,则返回一个空字符串:

    from itertools import islice
    
    def read_specific_line(filename, lineno):
        with open(filename) as f:
            return next(islice(f, lineno, lineno + 1), '')
    

    从文件中读取第3行:

    line = read_specific_line('/path/to/some/file.txt', 3)
    

    如果您需要知道给定文本的行号是什么,则需要使用enumerate()来跟踪到目前为止的行数:

    def what_line(filename, text):
        with open(filename) as f:
            for lineno, line in enumerate(f):
                if line.strip() == text:
                    return lineno
        return -1
    

    将返回行号(从0开始计数),如果在文件中找不到该行,则返回-1。

答案 1 :(得分:1)

python中的每个字符串都有一个名为“split”的函数。如果你调用string.split(“substring”)它会创建一个完全符合你要求的列表。

>>> string = "apples = green"
>>> string.split("=")
['apples ', ' green']
>>> string = "apples = green = leaves = chloroplasts"
>>> string.split("=")
['apples ', ' green ', ' leaves ', ' chloroplasts']

因此,如果使用string.split(),则可以在结果列表中调用索引以获取所需的子字符串:

>>> string.split(" = ")[0]
'apples'
>>> string.split(" = ")[1]
'green'
>>> string.split(" = ")[2]
'leaves'

etc ...只要确保你有一个实际包含子字符串的字符串,否则这将为任何大于0的索引抛出一个IndexError。