0

詳細モードでファイルを読みたい。

初め:

このファイルには、コードが従わなければならない特定の手順があります。文字列が表示されるまで手順を読み取るにはどうすればよいですか[data]

[Steps]
step1 = WebAddress
step2 = Tab
step3 = SecurityType
step4 = Criteria
step5 = Date
step6 = Click1
step7 = Results
step8 = Download
[data]
......

2番目: [データ]以降のすべてを読み取るにはどうすればよいですか。

[data]
WebAddress___________________________ Destination___________ Tab_____________ SecurityType___________________________________________________ Criteria___ Date_______ Click1_ Results_ Download    
https://mbsdisclosure.fanniemae.com/  q:\\%s\\raw\\fnmapool  Advanced Search  Interim MBS: Single-Family                                      Issue Date  09/01/2012  Search  100      CSV XML
https://mbsdisclosure.fanniemae.com/  q:\\%s\\raw\\fnmapool  Advanced Search  Preliminary Mega: Fannie Mae/Ginnie Mae backed Adjustable Rate  Issue Date  09/01/2012  Search  100      CSV XML
https://mbsdisclosure.fanniemae.com/  q:\\%s\\raw\\fnmapool  Advanced Search  Preliminary Mega: Fannie Mae/Ginnie Mae backed Fixed Rate       Issue Date  09/01/2012  Search  100      CSV XML

step____________________ステップをステップにすることができる場所(WebAddressなど)の下にあるすべてのものを渡したいです。たとえば、step1 = WebAddress以下のすべてをどのように読むのWebAddress__________________________ですか?ありがとう!

4

2 に答える 2

0

初め:

 with open(file_name) as f:
      print (f.read()).split("[data]")

2番:

with open(file_name) as f:
      pre_data,post_data =[s.strip() for s in (f.read()).split("[data]")]
post_data_lines = post_data.splitlines()
headers = post_data_lines[0].split()
print headers
for line in post_data_lines[1:]:
      print line.split()
      print dict(zip(headers,line.split()))

line.split('\t')また、[データ]がタブ付きの場合にどのように区切られているかもわかりません

これはテストされていません...しかし、それはうまくいくはずであり、あなたが望むところまで完全に行き着くわけではありませんが、少なくともあなたが望むもののほとんどを手に入れます(「難しい」部分)

ヘッダー幅で分割するには

file_name = "testdata.txt"
with open(file_name) as f:
      pre_data,post_data =[s.strip() for s in (f.read()).split("[data]")]
post_data_lines = post_data.splitlines()
headers = post_data_lines[0].split()

for line in post_data_lines[1:]:
    tmpline  = []
    pos = 0
    for itm in headers:
        tmpline.append(line[pos:pos+len(itm)])
        pos += len(itm)+1

    print dict(zip(headers,tmpline))

__のない実際のヘッダーが必要な場合は、次を使用します

file_name = "testdata.txt"
with open(file_name) as f:
      pre_data,post_data =[s.strip() for s in (f.read()).split("[data]")]
post_data_lines = post_data.splitlines()
headers = post_data_lines[0].split()
headers2 = [s.replace("_"," ").strip() for s in headers]
for line in post_data_lines[1:]:
    tmpline  = []
    pos = 0
    for itm in headers:
        tmpline.append(line[pos:pos+len(itm)])
        pos += len(itm)+1

    print dict(zip(headers2,tmpline))
于 2012-08-30T17:21:46.613 に答える
0

最初の一歩:

>>> import ConfigParser
>>> cfg = ConfigParser.RawConfigParser()
>>> with open('sample.cfg') as f:
...     cfg.readfp(f)
... 
>>> cfg.get('Steps','step1')
'WebAddress'

第二段階:

>>> data_section = ''
>>> with open('sample.cfg') as f:
...    data_section = f.read()
... 
>>> data = data_section[data_section.index('[data]')+len('[data]')+1:]
>>> reader = csv.reader(io.BytesIO(data),delimiter='\t')
>>> reader.next() # skips header
>>> results = [row for for row in reader]

結果はリストのリストになり、各内部リストにはデータ セクションの項目が含まれます。

[['https://mbsdisclosure.fanniemae.com/','q:\\\\%s\\\\raw\\\\fnmapool','Advanced Search', 'Interim MBS: Single-Family', 'Issue Date','09/01/2012','Search','100', 'CSV XML']...]
于 2012-08-30T21:05:51.227 に答える