2017-04-18 71 views
-1

嘿所以它是我的第一篇文章,我对Python /编码极其新颖。 我有这个问题,我不太清楚如何解释它。 本质上,我有这个txt文件,有一堆充满“列表的字符/数字” 像“5,0,10”和“$,20,5”的行,我有一块代码基本上去通过每行中的每个元素并返回0表示空格,-1表示非数字,如果元素是数字,则返回数字。现在,问题是我必须现在以某种方式编辑这些行的数字,并用返回的值(0和-1)替换空格和非数字,然后用python吐出来,并坦率地说我的代码太多了noob知道要使用什么功能。我有这个思维模块,我确切知道我需要做什么,但我不知道如何去做。我需要以某种方式将这些返回的值附加到带有原始数字的列表中,减去空格和非数字,并且在它们的位置具有0和-1。对不起,这是我的第一篇文章,它的格式可怕,划伤,格式可怕。将新值附加到文本文件列表中

def parseVote(s): 
    s = s.strip() 
    if len(s) == 0: 
     return 0 
    elif s.isdigit() == True: 
     return s 
    else: 
     return -1 

print(parseVote()) 
+0

在后粘贴您的代码在这里,所以我们可以看看和你指出正确的方向。 – JackPoint

+0

编辑我的文章并添加了代码 –

回答

0

我认为这是符合您的要求的。这可能是一个比使用strip函数更长的方法,但我认为我会尽量简化。最主要的是遍历列表的列表,以及每个列表中每个元素的嵌套循环。不过,我注意到,如果数字为0(结果0),就像元素为空(结果为0)时得到的结果相同。可能是一个问题。

with open(r'C:\Program Files\s.txt') as s_file: 
    s = [] 
    for line in s_file: 
     stripped_line = line.strip('\n') 
     s.append(stripped_line.split(',')) 

s_file.close() 
#s = [['5','0','10'],['$','20','','5']] 

def parseVote(s): 

    new_s = []   
    for s_list in s: 

     s_transform = []     
     for elem in s_list: 

      if len(elem) == 0: 
       s_transform.append(0)    
      elif elem.isdigit() == True: 
       s_transform.append(elem)    
      else: 
       s_transform.append(-1) 

     new_s.append(s_transform) 

    return new_s 

new_s = parseVote(s) 
print(new_s) 

输出:

[['5', '0', '10'], [-1, '20', 0, '5']] 
+0

哇你的代码块实际上是非常可读的,它就像读一本书ahahaha越多我学习编码越感兴趣我,非常感谢你帮助我,我一定会实现这个和看看它是否有效,我想我只需要导入txt文件。再次感谢你,这真的有帮助。 –

+0

@Jack Jock。我用一种方式编辑代码块,以便用行实例导入逗号分隔的文本文件。 – AF2k15

+0

不够感谢你 –