如何根据项目中的数字拆分列表项目

时间:2019-06-18 16:13:51

标签: python regex split

我当前正在解析这个巨大的rpt文件。在每个项目中,括号中都有一个值。例如,“ item_number_one(3.14)”。如何使用python中的split函数提取该3.14?还是有另一种方法?

#Splits all items by comma
items = line.split(',')

#splits items within comma, just gives name
name_only = [i.split('_')[0] for i in items]
# print(name_only)

#splits items within comma, just gives full name
full_name= [i.split('(')[0] for i in items]
# print(full_Name)

#splits items within comma, just gives value in parentheses
parenth_value = [i.split('0-9')[0] for i in items]
# parenth_value = [int(s) for s in items.split() if s.isdigit()]
print(parenth_value)

parenth_value = [i.split('0-9')[0] for i in items]

4 个答案:

答案 0 :(得分:0)

有关从字符串中提取数字的更通用方法,您应该阅读正则表达式。

对于这种非常特殊的情况,您可以先除以(,然后再除以),以得到它们之间的值。

像这样:

line = "item_number_one(3.14)"
num = line.split('(')[1].split(')')[0]
print(num)

答案 1 :(得分:0)

您可以简单地找到括号的起始索引和结尾的括号,并获得它们之间的区域:

start_paren = line.index('(')
end_paren = line.index(')')
item = line[start_paren + 1:end_paren]
# item = '3.14'

或者,您可以使用regex,它可以提供一种更为优雅的解决方案:

import re
...
# anything can come before the parentheses, anything can come afterwards.
# We have to escape the parentheses and put a group inside them
#  (this is notated with its own parentheses inside the pair that is escaped)
item = re.match(r'.*\(([0-9.-]*)\).*', line).group(1)
# item = '3.14'

答案 2 :(得分:0)

可以使用正则表达式并执行以下操作;

import re
sentence = "item_number_one(3.14)"
re.findall(r'\d.+', sentence)

答案 3 :(得分:0)

您可以使用以下正则表达式获取整数值:

import re

text = 'item_number_one(3.14)'

re.findall(r'\d.\d+', text)

o/p: ['3.14']

说明:

“ \ d”-匹配任何十进制数字;这相当于[0-9]类。

“ +”-一个或多个整数

您可以以同样的方式解析rpt文件并拆分行并获取括号中的值。