我在从字符串列表中提取数字(54878,45666,23331,003455)时遇到了一些问题, 我有一个字符串列表,如下所示(约2700+):
[" 011 54878 20000 0.00", " 45666 134 2.75", " 23331 0 0.00", " 015 00345 -11110 2.75"]
每个新行的数字都不同但有点保持相同的长度, 唯一确定的一致是数字之间的空间......
我试图仅提取第二列数字(54878,45666,23331,00345),有没有办法设置正则表达式代码只在一定数量的空白区域后拉 ,然后开始拉数直到第一个下一个空格?
谢谢(:!
答案 0 :(得分:0)
假设您要跳过的第一个x
数字没有小数,您可以使用以下内容:
^(\d+\s){x}(\d+)\s
此处,结果在组#2中捕获。 (确保将x
替换为您想要的内容。
例如,^(\d+\s){1}(\d+)\s
为您提供的示例在组#2中捕获'54878'。可以找到工作示例和解释here。
如果允许小数,则正则表达式有点复杂:
^(\d*\.?\d*\s){1}(\d*\.?\d*)\s
可以找到here的工作示例。
答案 1 :(得分:0)
您可以使用剪切(Linux程序)来分隔以下字段
cut -d " " -f2 test.txt
其中,-d " "
表示空格分隔,-f2
表示字段2。
示例文本文件test.txt:
011 54878 20000 0.00
012 548781 20000 0.00
013 5487822 20000 0.00
014 54878333 20000 0.00
015 548784444 20000 0.00
答案 2 :(得分:0)
您可以在Python中使用字符串拆分来分隔字段。
with open("test.txt") as fid:
for line in fid:
print line.split()[1]
结果打印:
54878
548781
5487822
54878333
548784444
使用示例test.txt文件
011 54878 20000 0.00
012 548781 20000 0.00
013 5487822 20000 0.00
014 54878333 20000 0.00
015 548784444 20000 0.00
答案 3 :(得分:0)
如果你使用python,你可以这样做:
import re
string = "011 54878 20000 0.00"
regex = "^[^ ]* ([0-9]*) .*$"
re.search(regex, string).group(1)