使用regexp我正在搜索包含数据的文本文件。我得到类似的输出。 以下是我得到的例子:
36
37
36
36
36
76
39
36
68
36
56
36
36
36
...
我需要所有36个像这样的数组['36','36',....]示例代码如下。
#!/usr/bin/python
import re
log = re.compile('Deleted file number: first: (\d+), second (\d+), third (\d+), fourth (\d+), bw (\d+), value: ([\dabcdefx]+), secondvalue: ([\d.]+)LM, hfs: ([\d.-]+)ls')
logfile = open("log.txt", "r").readlines()
List = []
for line in logfile:
m = log.match(line)
if m:
first = int (m.group(1))
second = int (m.group(2))
third = int (m.group(3))
fourth = int (m.group(4))
bw = int (m.group(5))
value = int (m.group(6),0)
secondvalue = float (m.group(7))
hfs = float (m.group(8))
List.append(str(first)+","+str(second)+"," \
+str(third)+","+str(fourth)+"," \
+str(bw)+","+str(value)+"," \
+str(secondvalue)+","+str(hfs))
for result in List:
print(result)
我可以使用sys.stdout.write()将它显示在与打印项相同的一行中, 但是如何将所有这些放入一个数组中,如array = [“149”,149“,”153“,”153“等等]
任何帮助都将不胜感激。
答案 0 :(得分:5)
您的数据已在列表中。如果要以数组表示法打印出来,请将其替换为:
for result in List:
print(result)
用这个:
print List
你真的不应该打电话给你的列表List
,但是list
是一个保留字,List
容易混淆。
顺便说一下,这个:
List.append(str(first)+","+str(second)+"," \
+str(third)+","+str(fourth)+"," \
+str(bw)+","+str(value)+"," \
+str(secondvalue)+","+str(hfs))
如果你使用其他一些Python特性,比如join:,那么就更容易理解了
List.append(",".join([first, second, third, fourth, bw, value, secondvalue, hfs]))
实际上,由于你的变量只是正则表达式中的组,你可以将整个事情简化为:
List.append(",".join(m.groups()))
答案 1 :(得分:1)
尝试过:
print List
如果你想要一个字符串:
result = str(List)
答案 2 :(得分:0)
假设你拥有的是字符串:
'"149" "149" "153" "153" "159" "159" "165" "165" "36" "36" "44"'
(目前还不清楚你是如何使用正则表达式获取数据的,因为你没有显示代码),请使用
[x.strip('"') for x in '"149" "149" "153" "153" "159" "159" "165" "165" "36" "36" "44"'.split()]
获取列表(不是数组,这是另一回事):
['149', '149', '153', '153', '159', '159', '165', '165', '36', '36', '44']
如果你真正想要的是一个数组(它只能存储数值,而不是你正在展示的数字的字符串表示,请使用):
import array
foo = array.array('i',(int(x.strip('"')) for x in '"149" "149" "153" "153" "159" "159" "165" "165" "36" "36" "44"'.split()))