A community for students.
Here's the question you clicked on:
 0 viewing
Jadzia
 one year ago
Python Help
I'm not sure how to extract the numbers from the file. I'm sure that if I'll extract them, they will be considered as strings, so I also have to convert it to float. I just need help in extracting the numbers.
The files are in the comments.
Jadzia
 one year ago
Python Help I'm not sure how to extract the numbers from the file. I'm sure that if I'll extract them, they will be considered as strings, so I also have to convert it to float. I just need help in extracting the numbers. The files are in the comments.

This Question is Closed

CyberShadow
 one year ago
Best ResponseYou've already chosen the best response.1You can split line at ":" character to get the floating point value by using ``` floatString =line.split(":",1)[1] ``` Now this floatString will be a string so you can use ``` floatValue =float(floatString) ``` to parse the float value from string You can also execute both commands in a single line ``` floatVal = float(line.split(":",1)[1]) ``` Let me know if this doesnt work for you , or you have some doubt.

Jadzia
 one year ago
Best ResponseYou've already chosen the best response.0I tried doing the splitting first, but it says "list index out of range"

CyberShadow
 one year ago
Best ResponseYou've already chosen the best response.1That would happen if there is no ":" in the line , make sure you use split after this line ``` if not line.startsWith("XDSPAMConfidence:") :continue floatString = line.split(":")[1] ``` dont add this splitting before that line.

Jadzia
 one year ago
Best ResponseYou've already chosen the best response.0yes, that's what I did...

CyberShadow
 one year ago
Best ResponseYou've already chosen the best response.1Why are you using 20 as index? When you'll split at ":" it will create an array of ["XDSPAMConfidence" , "whateverFloatValueYouHave"]. There are only two indexes 0 and 1.. Replace ``` floatString = line.split(":",1)[20] ``` with ``` floatString = line.split(":") [1] ```

Jadzia
 one year ago
Best ResponseYou've already chosen the best response.0oh okay! Now, I just did that and now it says "bad input"

CyberShadow
 one year ago
Best ResponseYou've already chosen the best response.1Bad input happens when indentation is not right in python... make sure you are using right indentation

Jadzia
 one year ago
Best ResponseYou've already chosen the best response.0okay. I'm just wondering if it is okay to put it before the 'continue'?

CyberShadow
 one year ago
Best ResponseYou've already chosen the best response.1No it's not.... we are checking if the line does not start with "XDSPAMConfidence:" then it would skip the rest of the code using Continue command. If we place it before continue , lines who doesnt contain any ":" will also call split() function and creates an array with single element , which would lead to "list index out of range errors again"

CyberShadow
 one year ago
Best ResponseYou've already chosen the best response.1Following code should fulfil your requirement ``` fname = raw_input("Enter file name: ") fh = open (fname) count = 0 total = 0 for line in fh: line = line.rstrip() count = count +1 if not line.startswith("XDSPAMConfidence:"):continue floatVal = float(line.split(":",1)[1]) #print floatVal total = total + floatVal average = total/count print "Average spam confidence:",average ```

Jadzia
 one year ago
Best ResponseYou've already chosen the best response.0thanks! I just have to adjust the average but I can manage it from here. Thank you so much
Ask your own question
Sign UpFind more explanations on OpenStudy
Your question is ready. Sign up for free to start getting answers.
spraguer
(Moderator)
5
→ View Detailed Profile
is replying to Can someone tell me what button the professor is hitting...
23
 Teamwork 19 Teammate
 Problem Solving 19 Hero
 Engagement 19 Mad Hatter
 You have blocked this person.
 ✔ You're a fan Checking fan status...
Thanks for being so helpful in mathematics. If you are getting quality help, make sure you spread the word about OpenStudy.