Как мне изменить значения в списке - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть список с такими значениями:

3.303.502.25

3.603.402.15

Я хочу отредактировать их, чтобы они выглядели так:

3.30 3.50 2.25

3.60 3.40 2.15

Код (я получаю его сселен через хромедривер)

poster = driver.find_elements_by_class_name("outcomeCollection")
odds = [x.text for x in poster]
print(odds)

Здесь я получаю значения:

['3.75\n3.50\n2.05', '1.28\n6.50\n10.00', '8.00\n5.00\n1.40', '8.50\n5.50\n1.33']

Я хочу, чтобы они отображались как

['3.75 3.50 2.05', '1.28 6.50 10.00', '8.00 5.00 1.40', '8.50 5.50 1.33']

ОБНОВЛЕНИЕ:

for post in teams, odds_nested:
    cobb = {"Teams": teams, "Odds": odds_nested}
    data = pd.DataFrame(cobb, columns=["Teams", "Odds"])
    data.insert(loc=1, column="Home", value=odds_nested[x][0])
    data.insert(loc=2, column="Draw", value=odds_nested[x][1])
    data.insert(loc=3, column="Away", value=odds_nested[x][2])
    x += 1

Это не работает, и я просто получаю значения для odds_nested [1]

Ответы [ 3 ]

0 голосов
/ 03 февраля 2019

Вы получаете строки, разделенные символами новой строки.Если вы просто хотите разделить их на пробелы, просто сделайте замену.

odds = ['3.75\n3.50\n2.05', '1.28\n6.50\n10.00', '8.00\n5.00\n1.40', '8.50\n5.50\n1.33']

odds_space_separated = [x.replace('\n',' ') for x in odds]
#Output:
['3.75 3.50 2.05', '1.28 6.50 10.00', '8.00 5.00 1.40', '8.50 5.50 1.33']

Кроме того, может быть лучше на самом деле сохранить значения как массивы, если вам понадобится использовать их позже.

odds_nested = [x.split() for x in odds]
#Output:
[['3.75', '3.50', '2.05'],
 ['1.28', '6.50', '10.00'],
 ['8.00', '5.00', '1.40'],
 ['8.50', '5.50', '1.33']]

Редактировать: и для печати значений во вложенных массивах вы можете выполнить итерацию и использовать метод .join.

for row in odds_nested:
    print(" ".join(row))
#Output:
3.75 3.50 2.05
1.28 6.50 10.00
8.00 5.00 1.40
8.50 5.50 1.33
0 голосов
/ 03 февраля 2019

Попробуйте использовать replace функцию строки с функцией map:

alist = ['3.75\n3.50\n2.05', '1.28\n6.50\n10.00', '8.00\n5.00\n1.40', '8.50\n5.50\n1.33']
alist = list(map(lambda x: x.replace("\n", " "), alist))
print(alist)

Следовательно, каждый элемент списка будет изменен.

Выход:

['3.75 3.50 2.05', '1.28 6.50 10.00', '8.00 5.00 1.40', '8.50 5.50 1.33']
0 голосов
/ 03 февраля 2019

Если целью является добавление пробела после каждой последовательности X.XX, регулярное выражение является хорошим инструментом.

>>> import re
>>> data = [
  '3.303.502.25',
  '3.603.402.15',
]
# The `.rstrip()` cleans out the stray whitespace that would appear
# at the end of the string:
>>> [re.sub(r'(\d.\d\d)', r'\1 ', r).rstrip() for r in data]
['3.30 3.50 2.25', '3.60 3.40 2.15']

# You can also use `re.findall` if you'd prefer a list of lists instead:
>>> [re.findall(r'(\d.\d\d)', r) for r in data]
[['3.30', '3.50', '2.25'], ['3.60', '3.40', '2.15']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...