我当前正在解析这个巨大的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]
答案 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文件并拆分行并获取括号中的值。