首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从行中解析数字

如何从行中解析数字
EN

Stack Overflow用户
提问于 2012-09-07 03:54:50
回答 2查看 334关注 0票数 0

我有一个文本文件,如下所示,并且正在尝试创建一个新的文本文件。每个字符串上都有数字和括号。我需要一些关于如何解析这个数字的帮助。

test.txt

代码语言:javascript
运行
复制
itemA (3)     
itemB (test) abcd (2)    
itemC xyx (3)

要创建的output.txt文件为:

代码语言:javascript
运行
复制
itemA-1  
itemA-2  
itemA-3  
itemB (test) abcd-1  
itemB (test) abcd-2  
itemC xyx-1  
itemC xyx-2   
itemC xyx-3

我当前的代码:

代码语言:javascript
运行
复制
import os  
f = open('C:\\Dropbox\\test.txt','r')  
data = f.read()  
print (data)  
f.close()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-07 03:58:08

使用正则表达式很容易:

代码语言:javascript
运行
复制
r'\s*\((\d+)\)'

这将匹配(可选)空格,后面跟着一个数字,并将该数字放在一个组中,以便于替换:

代码语言:javascript
运行
复制
parensnumber = re.compile(r'\s*\((\d+)\)')

count = int(parensnumber.search(line).group(1))
for i in range(count):
    print(parensnumber.sub('-{0}'.format(i + 1), line))

演示:

代码语言:javascript
运行
复制
>>> import re
>>> parensnumber = re.compile(r'\s*\((\d+)\)')
>>> parensnumber.sub(r'-\1', 'itemA (3)')
'itemA-3'
>>> parensnumber.sub(r'-\1',  'itemB (test) abcd (2)')
'itemB (test) abcd-2'
>>> line = 'itemB (test) abcd (2)'
>>> count = int(parensnumber.search(line).group(1))
>>> for i in range(count):
...     print(parensnumber.sub('-{0}'.format(i + 1), line))
... 
itemB (test) abcd-1
itemB (test) abcd-2

完成特定示例的代码:

代码语言:javascript
运行
复制
import os
import re

parensnumber = re.compile(r'\s*\((\d+)\)')

with open('C:\\Dropbox\\test.txt','r') as input:
    for line in input:
        count = int(parensnumber.search(line).group(1))
        for i in range(count):
            print(parensnumber.sub('-{0}'.format(i + 1), line))
票数 3
EN

Stack Overflow用户

发布于 2012-09-07 03:59:15

试试这个:

代码语言:javascript
运行
复制
o = open('output.txt', 'w')
for line in open('text.txt'):
    vals = line.split(' ')
    n = int(vals[-1][1:-1])
    for i in range(n):
        o.write("%s-%d" % (" ".join(vals[:-1]), i))
o.close()

只要你的输入是正确的。尽管您可能想要考虑使用REGEXPs而不是“手动”解析它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12307428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档