【发布时间】:2016-07-05 08:27:01
【问题描述】:
我有一个输入字符串:
"[u'$799,900', u'$1,698,000', u'$998,000', u'$1,299,000', u'$1,000,000', u'$499,950', u'$995,000', u'$998,000', u'$2,000,000', u'$988,000', u'$979,000', u'$1,285,000', u'$988,000', u'$579,000', u'$700,000', u'$1,100,000', u'$1,557,000', u'$999,888', u'$798,000', u'$998,000', u'$1,050,000', u'$888,000', u'$559,888', u'$774,900', u'$795,000', u'$850,000']","[u'3 bds', u' 2 ba', u' 1,361 sqft', u'4 bds ', u' 3 ba ', u' 2,845 sqft', u'3 bds ', u' 3 ba ', u' 1,534 sqft', u'3 bds', u' 2 ba', u' 1,762 sqft', u'5 bds', u' 3 ba', u' 2,398 sqft', u'2 bds', u' 2 ba', u' 956 sqft', u'4 bds', u' 3 ba', u' 1,840 sqft', u'3 bds', u' 2 ba', u' 1,212 sqft', u'3 bds', u' 3 ba', u' 1,878 sqft', u'3 bds', u' 2 ba', u' 1,240 sqft', u'3 bds', u' 2 ba', u' 1,207 sqft', u'3 bds', u' 3 ba', u' 1,905 sqft', u'3 bds', u' 3.5 ba', u' 1,591 sqft', u'2 bds', u' 2 ba', u' 946 sqft', u'2 bds', u' 2 ba', u' 1,067 sqft', u'4 bds', u' 3 ba', u' 2,254 sqft', u'5 bds', u' 4 ba', u' 2,744 sqft', u'3 bds', u' 3 ba ', u' 1,291 sqft', u'4 bds ', u' 3 ba ', u' 1,480 sqft', u'3 bds ', u' 2 ba', u' 1,513 sqft', u'4 bds', u' 2 ba', u' 1,846 sqft', u'9 bds ', u' 5 ba', u' 3,336 sqft', u'2 bds', u' 2 ba', u' 983 sqft', u'4 bds', u' 3 ba', u' 1,476 sqft', u'3 bds', u' 3 ba', u' 1,872 sqft', u'2 bds', u' 3 ba', u' 1,459 sqft']"
从中,我需要将 prices 提取到ints 的列表中。
这是我迄今为止尝试过的:
import re
pattern_price = r'\[u\'\$.*?\]'
patternx = r"(.*?u.*?)(\d+\,\d+\,\d+|\d+\,\d+)"
with open(fpath, "r") as f:
for line in f.readlines():
lst = re.findall(pattern_price, line)
print len(lst) # I get list with 1 element?
newlst = [x.split(patternx) for x in lst]
print len(newlst) # I got 1 element again?
【问题讨论】:
-
请提供原字符串,肯定有办法直接拆分。
-
我很确定
|是一个错字,应该是,。除此之外,我不确定您要做什么。你能发布输入和预期输出的例子吗? -
@Slayther - 这不是一个错字 - 想法是 grep 数十万和数百万的值 - 我用示例字符串在 regex101 上检查它并且它有效 - 我已经发布了预期输出的示例并调用它是 newlst - 不确定缺少什么 - 输入字符串是 lst - 预期输出是 newlst
-
预期的输出没有 5 个条目,它有 13 个。除非那是一个错字
-
newlst = [799,900, 1,698,000, 998,000, 1,299,000,1,000,000]有 13 个条目。那是你真正想做的吗?还是那个错字?