2017-01-19 48 views
1

您好我有數據這樣轉列分隔列表

40 
50 
70 

我想這樣的輸出: 40,50,70

我曾嘗試:

from sys import argv 
script, pos_file, output = argv 
positions = [] 
with open(pos_file) as f: 
    for x in f: 
     positions.append(x) 
print positions 

它給了我一個像'40 \ n','50 \ n','70 \ n'這樣的列表,因此它將數字視爲字符串並打印行分隔符\ n。我如何修改這段代碼來做我想做的事?

謝謝。

回答

0

我已經想通了這一點爲自己如下櫃面它可以幫助其他人(通過治療我列一個CSV文件稍微被騙):

from sys import argv 
import csv 
script, pos_file, output = argv 
positions = [] 
out = open(output, "w") 

with open(pos_file, "rb") as csv_file: 
    f = csv.reader(csv_file) 
    for x in f: 
     positions.append(x[0]) 
    print ",".join(positions) 

out.write(",".join(positions)) 
+0

從SYS進口的argv 腳本,pos_file,輸出= argv的 位置 '代碼'= [] 具有開放(pos_file)爲f: \t爲f中X: \t \t \t \t x.rstrip(」 \ n「); \t \t positions.append(X) \t intpos = [地圖(INT,X)爲在位置X] 打印intpos 打印POS –

0

你可以有你的原始代碼工作。您需要添加一行,以刪除新的行字符。

from sys import argv 
script, pos_file, output = argv 
positions = [] 
with open(pos_file) as f: 
    for x in f: 
     x.rstrip("\n"); 
     positions.append(x) 
print positions 

最後一行打印一個列表。在你的第二個代碼中,你創建了一個字符串而不是一個列表。

+0

戶外有用謝謝! –

+0

我該如何循環瀏覽 - 例如:for x in positions:print x if x <1000 –

+0

@SamLipworth for x in position:if int(x)<1000:print x'(添加適當的python格式) – bli