python - 如何在 Python 中格式化输出?

标签 python formatting python-2.6 file-processing

我在用 Python 格式化一些代码时遇到困难: 我的代码在这里:

keys = ['(Lag)=(\d+\.?\d*)','\t','(Autocorrelation Index): (\d+\.?\d*)',       '(Autocorrelation Index): (\d+\.?\d*)',     '(Semivariance): (\d+\.?\d*)']

import re
string1 = ''.join(open("dummy.txt").readlines())
found = []
for key in keys:
found.extend(re.findall(key, string1))
for result in found:
    print '%s  =  %s' % (result[0],result[1])
raw_input()

到目前为止,我得到了这个输出:

Lag = 1

Lag = 2

Lag = 3

Autocorrelation Index = #value

......

......

Semivariance = #value

但是我想要的输出是:

 Lag        AutoCorrelation Index   AutoCorrelation Index   Semivariance
  1              #value                   #value               #value
  2              #value                   #value               #value
  3              #value                   #value               #value

如果此输出可以在 CSV 中实现文件或 txt 文件,那就太好了!

我认为这是输出循环的一种方式,但我不太擅长循环。

我更新的代码(旧版本)

基于@mutzmatron 的回答

keys = ['(Lag)=(\d+\.?\d*)',
    '(Autocorrelation Index): (\d+\.?\d*)',
    '(Semivariance): (\d+\.?\d*)']

import re
string1 = open("dummy.txt").readlines().join()
found = []
for key in keys:
    found.extend(re.findall(key, string1))
raw_input()
for result in found:
    print '%s  =  %s' % (result[0], result[1])

raw_input()

尚未编译!我正在使用 IDLE python 2.6 ,不知道错误消息,因为我不知道提示中的暂停命令!

原始问题

我对 python 完全陌生,有一个问题。我正在尝试处理一个大文本文件。 这里只是其中的一个片段:

Band: WDRVI20((0.2*b4-b3)/((0.2*b4)+b3))
Basic Statistics:
  Min: -0.963805
  Max: 0.658219
  Mean: 0.094306
  Standard Deviation: 0.131797
Spatial Statistics, ***Lag=1***:
  Total Number of Observations (Pixels): 769995
  Number of Neighboring Pairs: 1538146
  Moran's I:
    ***Autocorrelation Index: 0.8482564597***
    Expected Value, if band is uncorrelated: -0.000001
    Standard Deviation of Expected Value (Normalized): 0.000806
    Standard Deviation of Expected Value (Randomized): 0.000806
    Z Significance Test (Normalized): 1052.029088
    Z Significance Test (Randomized): 1052.034915
  Geary's C:
    ***Autocorrelation Index: 0.1517324729***
    Expected Value, if band is uncorrelated: 1.000000
    Standard Deviation of Expected Value (Normalized): 0.000807
    Standard Deviation of Expected Value (Randomized): 0.000809
    Z Significance Test (Normalized): 1051.414163
    Z Significance Test (Randomized): 1048.752451
  ***Semivariance: 0.0026356529***
Spatial Statistics, Lag=2:
  Total Number of Observations (Pixels): 769995
  Number of Neighboring Pairs: 3068924
  Moran's I:
 Autocorrelation Index: 0.6230691635
   Expected Value, if band is uncorrelated: -0.000001
   Standard Deviation of Expected Value (Normalized): 0.000571
   Standard Deviation of Expected Value (Randomized): 0.000571
 Z Significance Test (Normalized): 1091.521976
 Z Significance Test (Randomized): 1091.528022
  Geary's C:
Autocorrelation Index: 0.3769372504
  Expected Value, if band is uncorrelated: 1.000000
  Standard Deviation of Expected Value (Normalized): 0.000574
  Standard Deviation of Expected Value (Randomized): 0.000587
 Z Significance Test (Normalized): 1085.700399
 Z Significance Test (Randomized): 1061.931158
Semivariance: 0.0065475488

我需要提取星号***值之间的信息(例如:自相关指数半方差值)并处理它,也许将其写入不同的文本文件或 Excel 文件。我可以这样做吗?非常感谢您的帮助。

最佳答案

为了按部分格式化数据,最简单的方法可能是按如下方式处理分段

keys =['(Lag)=(\d+\.?\d*)',
    '(Autocorrelation Index): (\d+\.?\d*)',
    '(Semivariance): (\d+\.?\d*)']

import re
string1 = ''.join(open("dummy.txt").readlines())

sections = string1.split('Spatial Statistics')

output = []
heads = []

for isec, sec in enumerate(sections):
    found = []
    output.append([])
    for key in keys:
        found.extend(re.findall(key, sec))
    for result in found:
        print '%s  =  %s' % (result[0],result[1])
        output[-1].append(result[1])
    if len(found) > 0 & len(heads) == 0:
        heads = [result[0] for result in found]    

fout = open('output.csv', 'w')
wrt = csv.writer(fout)
wrt.writerow(heads)
wrt.writerows(outputs)
fout.close()

关于python - 如何在 Python 中格式化输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11743257/

相关文章:

Python 不允许我在类定义尚未完成时使用类内部的方法

python - openCV python 根据边问题查找轮廓

python - 使用beautifulsoup时如何找出正确的编码?

python - 如何计算python中文件中的词频

python - 如何在 xlwt 中编写具有多列的单元格?

python - Python 中的 Namedtuple 格式化/ pretty-print

c - 如何有效地将多个参数与要在 C 中打印的字符串连接起来?

reporting-services - 更改 SSRS 中的图例形状

rundeckrun 的 Python 2.6 兼容性

python - 在 Python 上将数组、字典、列表打印到文本文件中