我有一个字符串:
"apples = green"
我如何打印:
在'='(苹果)之前打印所有内容
在'='(绿色)
指定文本文件中的字符串数。我有.txt文件,其中包含:
apples = green
lemons = yellow
... = ...
... = ...
答案 0 :(得分:6)
使用.split()
分割字符串:
print astring.split(' = ', 1)[0]
仍然使用.split()
分割字符串:
print astring.split(' = ', 1)[1]
或者,您可以使用.partition()
method:
>>> astring = "apples = green"
>>> print astring.split(' = ', 1)
['apples', 'green']
>>> print astring.partition(' = ')
('apples', ' = ', 'green')
分区始终只会拆分一次,但也会返回您拆分的字符。
如果您需要读取文件中的特定行,请首先通过迭代文件对象来跳过行。 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。