1

私はPythonを初めて使用するので、助けが必要です。ファイルから2つの列を取得し、それらを「新しいファイル」にコピーするPythonスクリプトを作成しました。ただし、時々、「新しいファイル」に列を追加する必要があります。下部ではなく、側面に列を追加する必要があります。私のスクリプトはそれらを一番下に追加します。誰かがCSVの使用を提案し、私はそれについて読みましたが、前の列の横に新しい列を追加する方法でそれを作成することはできません。どんな助けでも大歓迎です。

これが私が書いたコードです:

import sys
import re

filetoread = sys.argv[1]
filetowrite = sys.argv[2]

newfile = str(filetowrite) + ".txt"

openold = open(filetoread,"r")
opennew = open(newfile,"a")

rline = openold.readlines()

number = int(len(rline))
start = 0

for i in range (len(rline)) :
    if "2theta" in rline[i] :
        start = i

for line in rline[start + 1 : number] :
    words = line.split()
    word1 = words[1]
    word2 = words[2]
    opennew.write (word1 + " " + word2 + "\n")

openold.close()
opennew.close()

これが、CSVを使用して作成した2番目のコードです。

import sys
import re
import csv

filetoread = sys.argv[1]
filetowrite = sys.argv[2]

newfile = str(filetowrite) + ".txt"

openold = open(filetoread,"r")

rline = openold.readlines()

number = int(len(rline))
start = 0

for i in range (len(rline)) :
    if "2theta" in rline[i] :
        start = i

words1 = []
words2 = []

for line in rline[start + 1 : number] :
    words = line.split()
    word1 = words[1]
    word2 = words[2]
    words1.append([word1])
    words2.append([word2])

with open(newfile, 'wb') as file:
    writer = csv.writer(file, delimiter= "\n")
    writer.writerow(words1)
    writer.writerow(words2)

入力ファイルのサンプルは次のとおりです。

私の最初のスクリプトは、新しい列を下部に書き込み、前の列の横にそれらを必要とすることを除いて、「ほぼ」うまく機能します。

4

1 に答える 1

1

適切な使用方法は、すべての列writerowのデータを含む単一のリストを与えることです。

words.append(word1)
words.append(word2)
writer.writerow(words)
于 2012-11-30T04:37:21.517 に答える