data = """
    abcd1   1
    abcd2   2
    abcd3   3
    abcd4   4
    abcd5   5
    abcd6   6
    abcd7   7
    abcd8   8
    abcd9   9
    .
    .
    .
    abcd256 1
    abcd257 2
    abcd258 3
    abcd259 4
    abcd260 5
    abcd261 6
    abcd262 7
    abcd263 8
    abcd264 9
    """

if abcd1, then  Get  value 1,
if abcd2, then  Get  value 2,...so on

if abcd256, then  Get  value 1,
if abcd257, then  Get  value 2,

Значение условия должно быть от 1 до 255

Проверочная строка уже существует в переменной данных. Я использовал ниже код:

check = set()
for line in data.split("\n"):
    if len(line.split()) > 1:
        line = line.strip()
        check.add(line.split()[0])

if not "abcd264" in check:
            print "Not exist":
            value = 9#Help required to get value here 

else:
    print "Its already exist. Program exit"
    sys.exit()

Предложено использовать Pandas в другом посте, но мне нужно реализовать без использования Pandas

1
abc 14 Мар 2018 в 14:51

2 ответа

Лучший ответ

Если вы хотите сделать это на чистом Python, попробуйте сделать это следующим образом:

data = """
    abcd1   1
    abcd2   2
    abcd3   3
    abcd4   4
    abcd5   5
    abcd6   6
    abcd7   7
    abcd8   8
    abcd9   9
    abcd256 1
    abcd257 2
    abcd258 3
    abcd259 4
    abcd260 5
    abcd261 6
    abcd262 7
    abcd263 8
    abcd264 9
    """

data = data.replace("    ","").replace("   "," ").split("\n")[1:-1]
for d in data:
    number = int(d.split()[0][4:])
    print("For number %d the result is: %d" % (number,number % 255))

Выход:

For number 1 the result is: 1
For number 2 the result is: 2
For number 3 the result is: 3
For number 4 the result is: 4
For number 5 the result is: 5
For number 6 the result is: 6
For number 7 the result is: 7
For number 8 the result is: 8
For number 9 the result is: 9
For number 256 the result is: 1
For number 257 the result is: 2
For number 258 the result is: 3
For number 259 the result is: 4
For number 260 the result is: 5
For number 261 the result is: 6
For number 262 the result is: 7
For number 263 the result is: 8
For number 264 the result is: 9
2
Vasilis G. 14 Мар 2018 в 12:32

Вам лучше векторизовать ваши манипуляции с помощью библиотеки, такой как pandas. Вот пример:

from io import StringIO
import pandas as pd

mystr = """abcd1   1
abcd2   2
abcd3   3
abcd4   4
abcd5   5
abcd6   6
abcd7   7
abcd8   8
abcd9   9
"""

df = pd.read_csv(StringIO(mystr), delim_whitespace=True, header=None)
df['idx'] = df[0].str[4:].astype(int)

res = set(df.loc[df['idx'] <= 5, 1])

# {1, 2, 3, 4, 5}
0
jpp 14 Мар 2018 в 11:57