0
count = 0
fname = input("Enter file name: ")
fh = open(fname)
for line in fh:
    if line.startswith("X-DSPAM-Confidence:") :
        print(line)
        count = count + 1
print(count)

有一个包含 27 行的文件,例如 X-DSPAM-Confidence : 0.xxxxx,我需要从它们中提取数值以用于计算。

4

6 回答 6

2

尝试使用split(':')

代码:

count = 0
fname = input("Enter file name: ")
fh = open(fname)
for line in fh:
    if line.startswith("X-DSPAM-Confidence:") :
        print(line)
        value = line.split(':')[-1]  # will split line into 'X-DSPAM-Confidence' and 'value'
        # if you have ',' at the end of the line, simply do this:
        value = value.strip(',')
        value = float(value)
        print(value)
        count = count + 1
print(count)
于 2018-12-17T16:49:05.223 回答
1

只要格式与您描述的完全一样,您就可以使用以下代码:

float(line.split(':')[1])

如果文本中的变化比您描述的更多,您可能需要尝试正则表达式。

于 2018-12-17T16:51:44.640 回答
0

您可以使用str.rfind(':')获取位置,:然后执行字符串切片来获取值。

count = 0
fname = input("Enter file name: ")
fh = open(fname)
for line in fh:
    if line.startswith("X-DSPAM-Confidence:") :
        print(line)
        value = line[line.rfind(':'):]  # will take the last occurrence of : to slice the line
        print(value)
        count = count + 1
print(count)
于 2018-12-17T16:52:57.127 回答
0
fname = input("Enter file name:")
fh = open(fname)
count = 0
s=0
for line in fh:
    if not line.startswith("X-DSPAM-Confidence:"):
        continue
    count = count+1
    pos = line.find('0')
    floatingP = float(line[pos:])
    s += floatingP
print(s/count)
于 2021-10-23T10:34:34.980 回答
0
fname = input("Enter file name: ")
fh = open(fname)
val = 0
count = 0
for line in fh:
    if line.startswith("X-DSPAM-Confidence:") :
        count = count + 1
        val=val + float(line[line.find('0'):])
    elif not line.startswith("X-DSPAM-Confidence:") :
        continue
print("Average spam confidence:",val/count)
于 2020-07-03T11:05:06.930 回答
0
fname = input("Enter file name: ")
fh = open(fname)
count = 0
pos = 0
ans = None
total = 0
for line in fh:
    if not line.startswith("X-DSPAM-Confidence:") : 
        continue
    else :
        count = count + 1
        pos = line.find(':')
        ans = line[pos+1 : ]
        total = total + float(ans)
avg = total/count
于 2020-06-26T19:21:48.637 回答