选择加入线条

时间:2016-11-08 08:42:23

标签: python selected

我是python的新手,我需要解决以下问题(手工或python): 对于数据集,其中每个文件由不定数组的不同数量的行组成,后跟一行文本incl。日期和数字(对不起,如果句子没有出现):

2,

4,

6,

1,

2,

02-sep-2016, blah blah, blah, 83838338

3,

0,

0,

03-Aug-2000, blah, 300033

我需要文本行上方的最高数字位于文本前面,其余部分要删除:

6,02-sep-2016, blah blah, blah, 83838338

3,03-Aug-2000, blah, 300033

我知道max()函数,但是如何指定我的所有文件的一般规则要包含哪些数字,以及如何选择性地将某些数字转换为int()而不包括句子? 我尝试使用if len(line)<=3语句,但它无效。

2 个答案:

答案 0 :(得分:0)

您可以使用for line in my_file: ...阅读输入文件。如果您要使用的行max始终遵循您描述的格式(数字后跟逗号然后回车),您可以通过丢弃逗号和{{{}来将它们存储为整数集。 1}}使用切片然后对结果进行转换(即使用\n)。 int(line[:-2])然后为您提供该组的最大元素,您可以将其转换回max的字符串。要区分这些行和具有日期的行,请查找仅在日期行中找到的内容(即字符或 - )。

答案 1 :(得分:0)

from future.utils import isint
data = ["02-sep-2016, blah blah, blah, 83838338",2, 4,6,1,2,"02-sep-2016, blah blah, blah, 83838338",3,0,0,"03-Aug-2000, blah, 300033"]

vals=[]
final_data = "%d,%s"
formatted_rec = []
for each_val in data:

    if not isint(each_val) and "-" in each_val:
        if vals:
            max_digit = max(vals)
        else:
        #If text happens to be the first element of data set, set max_digit to zero
            max_digit = 0
        vals=[]
        formatted_rec.append(final_data %(max_digit, each_val))
    else:
        vals.append(each_val)

for each_rec in formatted_rec:
    print each_rec

输出:

0,02-sep-2016, blah blah, blah, 83838338
6,02-sep-2016, blah blah, blah, 83838338
3,03-Aug-2000, blah, 300033