Замена всех использований @ [word] для ссылки на твиттер-аккаунт в String

, если вы выбрали один и тот же дважды, удалите его из вариантов для раунда:

import random
hex_digits = set('0123456789ABCDEF')

result = ""
pick_from = hex_digits
for digit in range(12):
    cur_digit = random.sample(hex_digits, 1)[0]
    result += cur_digit
    if result[-1] == cur_digit:
        pick_from = hex_digits - set(cur_digit)
    else:
        pick_from = hex_digits

print(result)

Поскольку название упоминает генераторы. Вот как указано выше:

import random
hex_digits = set('0123456789ABCDEF')

def hexGen():
    while True:
        result = ""
        pick_from = hex_digits
        for digit in range(12):
            cur_digit = random.sample(hex_digits, 1)[0]
            result += cur_digit
            if result[-1] == cur_digit:
                pick_from = hex_digits - set(cur_digit)
            else:
                pick_from = hex_digits
        yield result

my_hex_gen = hexGen()
counter = 0

for result in my_hex_gen:
    print(result)
    counter += 1
    if counter > 10:
        break

Результаты:

1ECC6A83EB14
D0897DE15E81
9C3E9028B0DE
CE74A2674AF0
9ECBD32C003D
0DF2E5DAC0FB
31C48E691C96
F33AAC2C2052
CD4CEDADD54D
40A329FF6E25
5F5D71F823A4 

Вы также можете изменить цикл while, чтобы получить определенное количество из них на основе пройденного числа в функцию.

0
задан C. Fior 19 January 2019 в 04:12
поделиться

3 ответа

Не совсем уверен насчет кода внутри функции replace, но я не уверен, как вы вообще получили результат, так как функция не принимает аргументов и ничего не возвращает?

Попробуйте сделать это:

function replaceAts(tweet) {
    var newTweet = tweet.replace('@word', '<a href="https://twitter.com/$1" target="_blank">%$1</a>')
}
return newTweet;
}

var test = 'If you want these foams Ima give you the chrome @WillThaRapper'

console.log(replaceAts(test)); //prints 'If you want these foams Ima give you the chrome <a href="https://twitter.com/$1" target="_blank">%$1</a>'
0
ответ дан Jane 19 January 2019 в 04:12
поделиться

Вы можете использовать RegExp положительное выражение lookbehind или простую функцию, возвращающую желаемый результат - который на самом деле более настраиваемый.

var list = [
  'If you want these foams Ima give you the chrome @WillThaRapper.',
  'Whatever the mind of man can conceive and believe, it can achieve @NapoleonHill.',
  'Here is @my_id and please give me @yours.'
];

function replaceAts() {
  var replacer = function(match) {
    var id = match.substr(1);

    return `<a href="https://twitter.com/${id}" target="_blank">${id}</a>`;
  };

  for (var i = 0; i < list.length; i++) {
    list[i] = list[i].replace(/@\w+/g, replacer);
  }
}

replaceAts();

console.log(list);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

П.С. Дайте мне знать, если вам нужна версия решения для ES6, так как мы можем уменьшить их размер, значительно или, по крайней мере, улучшить читаемость.

0
ответ дан jom 19 January 2019 в 04:12
поделиться

Действительно нужна дополнительная информация, но это то, что вы ищете?

// List of twitter tags
let list = ["@someone", "@anotherperson", "@thisperson"];

const displayAccounts = (arr) => {
  let target = document.querySelector('ul');
  arr.forEach(twit => {
    let html = `<a href="https://twitter.com/${twit}" target="_blank">${twit}</a>`;
    let li = document.createElement('li');
    li.innerHTML = html;
    target.appendChild(li);
  });
};

document.addEventListener('DOMContentLoaded', () => {
  displayAccounts(list);
});
<div>
  <ul>
  </ul>
</div>

0
ответ дан Bibberty 19 January 2019 в 04:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: