我是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
语句,但它无效。
答案 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