Распознать строку в текстовом формате из двух столбцов - PullRequest
0 голосов
/ 20 ноября 2018

Я хочу, чтобы моя программа считывала строки в текстовом формате и распознавала строку, используя два столбца, я пробовал использовать для строки в столбце column1 и column2, но она не работает, и я не знаю, почему, вот код. (Здесь я хочу напечатать 5 первых букв, когда он распознает строку, но позже я помещу эти пять букв в список).

import pandas as pd
import re
import numpy as np

link = "excelfilett.txt"
file = open(link, "r")
frames_load = []
is_count_frames_load = False
for line in file:
    if "[Interface1]" in line:
        is_count_frames_load = True
    if is_count_frames_load== True:
        frames_load.append(line)
    if "[EthernetComNeed]" in line:
        break

number_of_rows_load = len(frames_load) -1
header_load = re.split(r'\t', frames_load[0])
number_of_columns_load = len(header_load)

frame_array_load = np.full((number_of_rows_load, number_of_columns_load), 0)
df_frame_array_load = pd.DataFrame(frame_array_load)
df_frame_array_load.columns= header_load

for row in range(number_of_rows_load):
    frame_row_load = re.split(r'\t', frames_load[row])
    for position in range(len(frame_row_load)):
        df_frame_array_load.iloc[row, position] = frame_row_load[position]
print(df_frame_array_load)
df_frame_array_load["[Name]"] = df_frame_array_load["[End1]"] + '\t' +  df_frame_array_load["[End2]"]
df_frame_array_load["[Name2]"] = df_frame_array_load["[End2]"] + '\t' +  df_frame_array_load["[End1]"]

print(df_frame_array_load["[Name]"])
print(df_frame_array_load["[Name2]"])

link = "excelfilett.txt"
file = open(link, "r")
frames_path = []
is_count_frames_path = False
for line in file:
    if "[Routing Paths]" in line:
        is_count_frames_path = True
    if is_count_frames_path== True:
        for row in df_frame_array_load["[Name]"] and df_frame_array_load["[Name2]"]:
            if row in line:
                print(row)
                print(line[0:4])
            if "[EthernetComNeed]" in line:
                break
    if "[EthernetComConfig]" in line:
        break

В качестве вывода я хочу напечатать сначала 5буквы в строках txt.Я использую, когда он распознает строку, например, когда «S1 \ tS2» находится в строке текста, он напечатает мне 5 первых букв, поэтому «FL_1», два столбца содержит строку как «S1 \»tS2 "и обратное (например," S2 \ tS1 "), это точка линии, где у меня есть проблема, она дает мне

ValueError: Истинное значение Series является неоднозначным.Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

в строке "для строки в столбце 1 и столбце 2:".

1 Ответ

0 голосов
/ 21 ноября 2018

Я думаю, что невозможно читать строки в двух столбцах одновременно, я просто заставляю свою программу читать эти два столбца отдельно, вот что я изменил:

link = "excelfilett.txt"
file = open(link, "r")
frames_path = []
is_count_frames_path = False
for line in file:
    if "[Routing Paths]" in line:
        is_count_frames_path = True
    if is_count_frames_path== True:
        for row in df_frame_array_load["[Name]"]:
            if row in line:
                print(row)
                print(line[0:4])
            if "[EthernetComNeed]" in line:
                break
        for row in df_frame_array_load["[Name2]"]:
            if row in line:
                print(row)
                print(line[0:4])
    if "[EthernetComConfig]" in line:
        break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...