473,396 Members | 1,826 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

text file parsing

hi,

i have text file of the form

atom_trace('emotion_response_level(a1, 1.56072)', emotion_response_level(a1, 1.56072), [range(49, 50, true), range(0, 49, unknown)]).

and

atom_trace('goto(a1, a3)', goto(a1, a3), [range(1, 51, true), range(0, 1, unknown)]).

i heve to parse this file . Basically what i required is , i want to extract, emotion response level, range , true and . please tell, how i can parse it.

awaiting your reply.
thanks.

Ghazanfar

removed
Mar 14 '07 #1
10 1856
bvdet
2,851 Expert Mod 2GB
hi,

i have text file of the form

atom_trace('emotion_response_level(a1, 1.56072)', emotion_response_level(a1, 1.56072), [range(49, 50, true), range(0, 49, unknown)]).

and

atom_trace('goto(a1, a3)', goto(a1, a3), [range(1, 51, true), range(0, 1, unknown)]).

i heve to parse this file . Basically what i required is , i want to extract, emotion response level, range , true and . please tell, how i can parse it.

awaiting your reply.
thanks.

Ghazanfar

s_ghazanfar@hotmail.com
We can help you with this, but we need some more information. Can you show us exactly how the data should appear after extraction?
e.g.:
Expand|Select|Wrap|Line Numbers
  1. 'emotion_response_level_a1 = 1.56072; range = (49, 50); True'
Should the data be in a dictionary, list or tuple? What about the other ranges?
Mar 14 '07 #2
dshimer
136 Expert 100+
Guys like GhostDog74 and bvdet really give me a clue as to how elementary my understanding of modules really is, so I'd like to take this opportunity to learn something based on how I first approached it.
In this case my first inclination because the input seems so structured and consistant would be to just grab all the data into a list by replacing all the non data characters with a space then splitting the result, then act on the appropriate index values converting them to numbers or whatever as I go. For example something like
Expand|Select|Wrap|Line Numbers
  1. >>> txt="atom_trace('emotion_response_level(a1, 1.56072)', emotion_response_level(a1, 1.56072), [range(49, 50, true), range(0, 49, unknown)])."
  2. >>> print txt.replace('[',' ').replace(']',' ').replace('(',' ').replace(')',' ').replace(',',' ').replace("'",' ').split()
  3. ['atom_trace', 'emotion_response_level', 'a1', '1.56072', 'emotion_response_level', 'a1', '1.56072', 'range', '49', '50', 'true', 'range', '0', '49', 'unknown', '.']
  4.  
I know there are ways to create multiple replace functions using re, but if that were my only goal (replace stuff with spaces and split, or just split on the non data characters) is there an easier way to do it?
Mar 14 '07 #3
i have text file like this.

LeadsTo trace
atom_trace('emotion_response_level(a1, 1.56072)', emotion_response_level(a1, 1.76072), [range(49, 50, true), range(0, 49, unknown)]).

i can describe above line of text in this way:
a1(agent ) has emotion_response_level=1.56072 and that is correspond to range(49,50,true), similarly

a1(agent) has emotion_response_level=1.76072 and that is correspond to range(0,49,unknown), now later on, i have to use in my program that,the agent a1 has emotion_ response_level= 1.56072, because it is true in rage (49,50,true)
i.e. i have to select the portion related to true range values.
and then i have also use the vale of range in the program.

atom_trace('goto(a1, a3)', goto(a1, a3), [range(1, 51, true), range(0, 1, unknown)]).

atom_trace('agents_have_conversation(a1, a3, ajax)', agents_have_conversation(a1, a3, ajax), [range(3, 11, true), range(0, 3, unknown)]).

ghazanfar
Mar 14 '07 #4
bartonc
6,596 Expert 4TB
i have text file like this.

LeadsTo trace
atom_trace('emotion_response_level(a1, 1.56072)', emotion_response_level(a1, 1.76072), [range(49, 50, true), range(0, 49, unknown)]).

i can describe above line of text in this way:
a1(agent ) has emotion_response_level=1.56072 and that is correspond to range(49,50,true), similarly

a1(agent) has emotion_response_level=1.76072 and that is correspond to range(0,49,unknown), now later on, i have to use in my program that,the agent a1 has emotion_ response_level= 1.56072, because it is true in rage (49,50,true)
i.e. i have to select the portion related to true range values.
and then i have also use the vale of range in the program.

atom_trace('goto(a1, a3)', goto(a1, a3), [range(1, 51, true), range(0, 1, unknown)]).

atom_trace('agents_have_conversation(a1, a3, ajax)', agents_have_conversation(a1, a3, ajax), [range(3, 11, true), range(0, 3, unknown)]).

ghazanfar
Please read the "POSTING GUIDELINES" for this site. Double posting and email address in posts are two things that are not allowed.
Mar 14 '07 #5
ghostdog74
511 Expert 256MB
Can you give an exact sample of the input file , and how you want your output to be like. i can't really understand what you are describing.
Mar 15 '07 #6
The general format is like

atom_trace(seed, seed, [range(860.0, 1000, false), range(840.0, 860.0, true), range(580.0, 840.0, false), range(560.0, 580.0, true), range(300.0, 560.0, false), range(280, 300.0, true), range(20, 280, false), range(0, 20, true)]).

But I required result as I send u.

Here is the sample.

atom_trace('emotion_response_level(a1, 1.56072)', emotion_response_level(a1, 1.56072), [range(49, 50, true), range(0, 49, unknown)]).

atom_trace('emotion_response_level(a2, 1.81894)', emotion_response_level(a2, 1.81894), [range(49, 50, true), range(0, 49, unknown)]).

atom_trace('emotion_response_level(a3, 1.51193)', emotion_response_level(a3, 1.51193), [range(49, 50, true), range(0, 49, unknown)]).

atom_trace('emotion_response_level(a1, 1.85)', emotion_response_level(a1, 1.85), [range(1, 50, unknown), range(0, 1, true)]).

atom_trace('emotion_response_level(a2, 1.2)', emotion_response_level(a2, 1.2), [range(1, 50, unknown), range(0, 1, true)]).
atom_trace('emotion_response_level(a3, 0.7)', emotion_response_level(a3, 0.7), [range(1, 50, unknown), range(0, 1, true)]).
atom_trace('emotion_response_level(a1, 1.84775)', emotion_response_level(a1, 1.84775), [range(2, 50, unknown), range(1, 2, true), range(0, 1, unknown)]).
atom_trace('emotion_response_level(a2, 1.39275)', emotion_response_level(a2, 1.39275), [range(2, 50, unknown), range(1, 2, true), range(0, 1, unknown)]).
atom_trace('emotion_response_level(a3, 1.04275)', emotion_response_level(a3, 1.04275), [range(2, 50, unknown), range(1, 2, true), range(0, 1, unknown)]).
atom_trace('has_emotional_value(a1, aspect, 1.8)', has_emotional_value(a1, aspect, 1.8), [range(3, 50, unknown), range(0, 3, true)]).
atom_trace('has_emotional_value(a3, aspect, 1.8)', has_emotional_value(a3, aspect, 1.8), [range(3, 50, unknown), range(0, 3, true)]).


Ghazanfar
Mar 15 '07 #7
bvdet
2,851 Expert Mod 2GB
The general format is like

atom_trace(seed, seed, [range(860.0, 1000, false), range(840.0, 860.0, true), range(580.0, 840.0, false), range(560.0, 580.0, true), range(300.0, 560.0, false), range(280, 300.0, true), range(20, 280, false), range(0, 20, true)]).

But I required result as I send u.

Here is the sample.

atom_trace('emotion_response_level(a1, 1.56072)', emotion_response_level(a1, 1.56072), [range(49, 50, true), range(0, 49, unknown)]).

atom_trace('emotion_response_level(a2, 1.81894)', emotion_response_level(a2, 1.81894), [range(49, 50, true), range(0, 49, unknown)]).

atom_trace('emotion_response_level(a3, 1.51193)', emotion_response_level(a3, 1.51193), [range(49, 50, true), range(0, 49, unknown)]).

atom_trace('emotion_response_level(a1, 1.85)', emotion_response_level(a1, 1.85), [range(1, 50, unknown), range(0, 1, true)]).

atom_trace('emotion_response_level(a2, 1.2)', emotion_response_level(a2, 1.2), [range(1, 50, unknown), range(0, 1, true)]).
atom_trace('emotion_response_level(a3, 0.7)', emotion_response_level(a3, 0.7), [range(1, 50, unknown), range(0, 1, true)]).
atom_trace('emotion_response_level(a1, 1.84775)', emotion_response_level(a1, 1.84775), [range(2, 50, unknown), range(1, 2, true), range(0, 1, unknown)]).
atom_trace('emotion_response_level(a2, 1.39275)', emotion_response_level(a2, 1.39275), [range(2, 50, unknown), range(1, 2, true), range(0, 1, unknown)]).
atom_trace('emotion_response_level(a3, 1.04275)', emotion_response_level(a3, 1.04275), [range(2, 50, unknown), range(1, 2, true), range(0, 1, unknown)]).
atom_trace('has_emotional_value(a1, aspect, 1.8)', has_emotional_value(a1, aspect, 1.8), [range(3, 50, unknown), range(0, 3, true)]).
atom_trace('has_emotional_value(a3, aspect, 1.8)', has_emotional_value(a3, aspect, 1.8), [range(3, 50, unknown), range(0, 3, true)]).


Ghazanfar
I would suggest creating a dictionary of dictionaries in this format:
Expand|Select|Wrap|Line Numbers
  1. {record1: {seed: emotion....., agent: ax, value: x.xxxx, rangeTrue: [low, high], rangeFalse: [low,high]}
  2.  record2: {....}
  3.  record3: {....}
  4. }
Mar 15 '07 #8
bvdet
2,851 Expert Mod 2GB
Since there may be multiple ranges, maybe this format would be better:
Expand|Select|Wrap|Line Numbers
  1. rec0 = {'ranges': [(49, 50, True), (0, 49, False)], 'seed': 'emotion_response_level', 'value': 1.5607200000000001, 'agent': 'a1'}
Sample dictionary listing:
Expand|Select|Wrap|Line Numbers
  1. rec4: ranges = [(1, 50, False), (0, 1, True)]
  2. rec4: seed = emotion_response_level
  3. rec4: value = 1.2
  4. rec4: agent = a2
  5. rec5: ranges = [(1, 50, False), (0, 1, True)]
  6. rec5: seed = emotion_response_level
  7. rec5: value = 0.7
  8. rec5: agent = a3
  9. rec6: ranges = [(2, 50, False), (1, 2, True), (0, 1, False)]
  10. rec6: seed = emotion_response_level
  11. rec6: value = 1.84775
  12. rec6: agent = a1
Mar 15 '07 #9
bvdet
2,851 Expert Mod 2GB
Since there may be multiple ranges, maybe this format would be better:
Expand|Select|Wrap|Line Numbers
  1. rec0 = {'ranges': [(49, 50, True), (0, 49, False)], 'seed': 'emotion_response_level', 'value': 1.5607200000000001, 'agent': 'a1'}
Sample dictionary listing:
Expand|Select|Wrap|Line Numbers
  1. rec4: ranges = [(1, 50, False), (0, 1, True)]
  2. rec4: seed = emotion_response_level
  3. rec4: value = 1.2
  4. rec4: agent = a2
  5. rec5: ranges = [(1, 50, False), (0, 1, True)]
  6. rec5: seed = emotion_response_level
  7. rec5: value = 0.7
  8. rec5: agent = a3
  9. rec6: ranges = [(2, 50, False), (1, 2, True), (0, 1, False)]
  10. rec6: seed = emotion_response_level
  11. rec6: value = 1.84775
  12. rec6: agent = a1
Ghazanfar,

Would the data compiled in this format work for you? Are you going to write the code yourself, or do you need help? We are here if you need help.
Mar 16 '07 #10
bvdet
2,851 Expert Mod 2GB
I guess ghazanfar solved his problem since he has not been back. For those of you interested, here is the code I came up with:
Expand|Select|Wrap|Line Numbers
  1. fname = r'your_file'
  2.  
  3. def atomtraceParse(fn):
  4.     fileList = [x[x.find(")', ")+4:].replace(', aspect', '').strip() for x in open(fn).readlines()]
  5.     dd = {}
  6.     cnt = 0
  7.     for item in fileList:
  8.         itemList = item.split('), ')
  9.         a = itemList[0].split('(')
  10.         a1 = a[1].split(', ')
  11.         rangeList = [eval(x.strip('[]()').split('(')[1].replace('unknown', 'False').replace('true', 'True')) for x in itemList[1:]]
  12.         dd['rec'+str(cnt)]=dict(seed=a[0], agent=a1[0], value=float(a1[1]), ranges=[x for x in rangeList])
  13.         cnt += 1
  14.     return dd
  15.  
  16. dataDict = atomtraceParse(fname)
  17.  
  18. keys = dataDict.keys()
  19. keys.sort()
  20. for key in keys:
  21.     for item in dataDict[key]:
  22.         print '%s: %s = %s' % (key, item, dataDict[key][item])
Mar 18 '07 #11

Sign in to post your reply or Sign up for a free account.

Similar topics

2
by: Bob | last post by:
Hi, I have a website in a Linux/Apache shared hosting environment and have been given access to the MySQL server running on the same machine. To access this database from PHP, I have to call...
1
by: Scott | last post by:
I am new to perl, and have not found any good examples of parsing to help me out. I have a text file that I am reading into an array that has to be parsed out and put into another file. I have not...
27
by: Eric | last post by:
Assume that disk space is not an issue (the files will be small < 5k in general for the purpose of storing preferences) Assume that transportation to another OS may never occur. Are there...
4
by: Hugh | last post by:
Hello, I am having some problems understanding (most likely), parsing a text file. I would like to parse a file like: block1 { stuff; ... stuffN; };
11
by: .Net Sports | last post by:
In VB.net, I'm trying to do a couple of things in a couple of different blocks of code. I need to take the first 25 characters of a text file, then append at the end some ellipses and a MORE link...
13
by: sonald | last post by:
Hi, Can anybody tell me how to change the text delimiter in FastCSV Parser ? By default the text delimiter is double quotes(") I want to change it to anything else... say a pipe (|).. can anyone...
4
by: thenewuser | last post by:
Hi all, I am working on windows 2000 and using php 5.0 and apache 2.0.59. I am facing a problem while parsing a text file.Actually I am using a pop server for parsing an email.I am downloading...
3
by: toton | last post by:
Hi, I have some ascii files, which are having some formatted text. I want to read some section only from the total file. For that what I am doing is indexing the sections (denoted by .START in...
2
by: flyzone | last post by:
Goodmorning people :) I have just started to learn this language and i have a logical problem. I need to write a program to parse various file of text. Here two sample: --------------- trial...
2
by: python | last post by:
I'm parsing a text file for a proprietary product that has the following 2 directives: #include <somefile> #define <name<value> Defined constants are referenced via <#name#syntax. I'm...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.