python - 使用Python在文件中查找字符串并在同一行中提取整数值

标签 python python-2.6

我是 python 新手,遇到以下问题。

我有一个文本文件 (filename.dat),其中提供了有关我的模型的信息。相关部分摘要如下:

      NUMBER OF ELEMENTS IS                               1367466
      NUMBER OF NODES IS                                   252624
      NUMBER OF NODES DEFINED BY THE USER                  248291
      NUMBER OF INTERNAL NODES GENERATED BY THE PROGRAM      4333
      TOTAL NUMBER OF VARIABLES IN THE MODEL               783873

我可以使用以下 python 命令搜索该行:

with open('filename.dat', 'r') as inF:
    for line in inF:
        if 'NUMBER OF ELEMENTS IS' in line:
            print "true"

但是我不确定如何在与“NUMBER OF ELEMENTS IS”相同的行中提取整数值 (1367466)。现在有人知道如何从与字符串字符混合的行中提取字符串数字吗?

最佳答案

从右边用空格分割一行,一次:

In [18]: line.rsplit(None, 1)
Out[18]: ['TOTAL NUMBER OF VARIABLES IN THE MODEL', '783873']

看第二部分:

In [19]: line.rsplit(None, 1)[1]
Out[19]: '783873'

将其转换为整数:

In [20]: int(line.rsplit(None, 1)[1])
Out[20]: 783873

您可以使用元组解包来使代码更清晰(如果您的整个文件都是这种格式):

with open('filename.dat', 'r') as inF:
    for line in inF:
        label, number = line.rsplit(None, 1)
        if 'NUMBER OF ELEMENTS IS' in label:
            print "true"
            number = int(number)
            ...

如果某些行的格式不同,则必须先搜索然后再拆分:

with open('filename.dat', 'r') as inF:
    for line in inF:
        if 'NUMBER OF ELEMENTS IS' in line:
            print "true"
            label, number = line.rsplit(None, 1)   # label is unused then
            number = int(number)
            ...

关于python - 使用Python在文件中查找字符串并在同一行中提取整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15776550/

相关文章:

python - 错误 : command 'gcc' failed with exit status 1 on centos 6. 5

python - Groupby 和基于特定行值的计算

python - Jupyter笔记本突然变得很慢

python - Flask session 不 JSON 序列化 cookie

python - 你如何在 python 2 和 3 之间切换,反之亦然?

Python 脚本无法在 cron 中正确执行

python - 在 Django 中构建自定义 ZIP 文件

python - 如果我独立运行程序,Urllib2 运行正常,但当我将其添加到 cronjob 时会抛出错误

Python 返回 "wrong"退出代码

python - 将长条件表达式拆分为行