python detect tab char

时间:2014-07-09 21:13:30

标签: python string split

我试图在特定文件中拆分单词和整数。文件的字符串是这些形式的(包含单词的行没有' \ t' char但是int数字(所有正数)都有): (有些单词是包含' - ' char,)

的数字
-1234
\t22
\t44
\t46
absv
\t1
\t2
\t4
... 

所以我的想法是通过将线条的对象转换为浮动来分割单词和字符串。

def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        return False

with codecs.open("/media/New Volume/3rd_step.txt", 'Ur') as file:#open file
    for line in file: # read line by line
        temp_buffer = line.split() # split elements
        for word in temp_buffer:
            if not('-' in word or not is_number(word)):
            ....

所以如果它是一个单词,我会得到例外,如果不是那么它是一个数字。该文件是50 Gb,在中间的某个地方似乎文件的格式出了问题。因此,分割单词和数字的唯一可能方法是使用\ t char。但我怎么能检测出来呢?我的意思是我将线分开以获得字符串,然后我就失去了特殊的字符。

编辑:

我真的很傻,而且抱歉浪费你的时间。看来我可以通过这种方式更容易找到它:

with codecs.open("/media/D60A6CE00A6CBEDD/InvertedIndex/1.txt", 'Ur') as file:#open file
    for line in file: # read line by line
    if not '\t' in line:
            print line

1 个答案:

答案 0 :(得分:4)

您应该尝试将参数指定为split()而不是仅使用默认值,即所有空格字符。您可以将它最初拆分为除\t之外的所有空格。试试这个:

white_str = list(string.whitespace)    # string.whitespace contains all whitespace.
white_str.remove("\t")                 # Remove \t
white_str = ''.join(white_str)         # New whitespace string, without \t

然后使用split()代替split(white_str)。这将在除\t之外的所有空格上拆分行以获取字符串。然后,您可以稍后检测\t以获取所需内容。