Python, который возвращает строки в файле, которые имеют слишком много или недостаточно вкладок - PullRequest
0 голосов
/ 13 февраля 2020

Мне нужно несколько python, которые будут выполнять следующие действия:

  • Найти все строки в текстовом файле с разделителями табуляции, у которых количество вкладок больше или меньше X.
  • Печать этих строк (каждая строка в своей собственной строке, конечно)

Так, например, "the_file.txt" имеет следующее содержание:

Field1[TAB]Field2[TAB]Field3[TAB]Field4[TAB]Field5
Field1[TAB]Field2[TAB]Field3
Field1[TAB]Field2[TAB]Field3[TAB]Field4
Field1[TAB]Field2[TAB]Field3[TAB]Field4[TAB]Field5

Pseudo python:

Read the_file.txt
Find all rows that do not have 4 tabs
Print the entire content of those rows

Возвращает:

Field1[TAB]Field2[TAB]Field3
Field1[TAB]Field2[TAB]Field3[TAB]Field4

Следует учитывать, что файлы, с которыми я хочу запустить Python, часто очень большие, всегда 1000+ строк, часто 10 000+ строк, иногда более 100 000 строк.

Спасибо!

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Вот вам go

number_not_tabs = 4

with open('the_file.txt') as f:
    content = f.readlines()
# you may also want to remove whitespace characters like `\n` at the end of each line
for x in content:
    if x.count("\t") != number_not_tabs:
        print(x)
0 голосов
/ 13 февраля 2020

Просто сделайте это:

df=pd.read_csv('the_file.txt',sep='\t')
df.columns=['Col1','Col2','Col3','Col4','Col5']
nans = lambda df: df[df.isnull().any(axis=1)]

print(nans(df))

Вывод:

    Col1    Col2    Col3    Col4    Col5
0   Field1  Field2  Field3  NaN     NaN
1   Field1  Field2  Field3  Field4  NaN
...