Не используйте дезинфицированную функцию mysql_ * (лишенная php 5.5 будет удалена в php 7). и вы можете сделать это с помощью mysqli или pdo
здесь полный запрос выбора
connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
// code here
}
} else {
echo "0 results";
}
$conn->close();
?>
Если вы хотите проверить наличие abc
в любой строке в списке, вы можете попробовать
some_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
if any("abc" in s for s in some_list):
# whatever
Если вы действительно хотите получить все элементы, содержащие abc
, использовать
matching = [s for s in some_list if "abc" in s]
mylist=['abc','def','ghi','abc']
pattern=re.compile(r'abc')
pattern.findall(mylist)
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
for item in my_list:
if (item.find('abc')) != -1:
print ('Found at ', item)
Это довольно старый вопрос, но я предлагаю этот ответ, потому что предыдущие ответы не справляются с элементами в списке, которые не являются строками (или каким-то истребимым объектом). Такие элементы приведут к тому, что полное исключение списка завершится с исключением.
Чтобы изящно обрабатывать такие элементы в списке, пропуская неистребимые элементы, используйте следующее:
[el for el in lst if isinstance(el, collections.Iterable) and (st in el)]
, то с таким списком:
lst = [None, 'abc-123', 'def-456', 'ghi-789', 'abc-456', 123]
st = 'abc'
вы все равно получите соответствующие элементы (['abc-123', 'abc-456']
)
Тест на итерабельность может быть не лучшим. Получил это отсюда: В Python, как определить, является ли объект итерируемым?
Просто выбросьте это: если вам нужно сопоставить более чем одну строку, например abc
и def
, вы можете поместить комбинацию двух списков следующим образом:
matchers = ['abc','def']
matching = [s for s in my_list if any(xs in s for xs in matchers)]
Выход:
['abc-123', 'def-456', 'abc-456']
Насколько мне известно, оператор «for» всегда будет потреблять время.
Когда длина списка растет, время выполнения также будет возрастать.
Я думаю, что, поиск подстроки в строке с оператором 'is' немного быстрее.
In [1]: t = ["abc_%s" % number for number in range(10000)]
In [2]: %timeit any("9999" in string for string in t)
1000 loops, best of 3: 420 µs per loop
In [3]: %timeit "9999" in ",".join(t)
10000 loops, best of 3: 103 µs per loop
Но я согласен с тем, что инструкция any
более читаема.
for item in my_list:
if item.find("abc") != -1:
print item
Используйте filter
, чтобы получить элементы, которые имеют abc
.
>>> lst = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
>>> print filter(lambda x: 'abc' in x, lst)
['abc-123', 'abc-456']
Вы также можете использовать понимание списка.
>>> [x for x in lst if 'abc' in x]
Кстати, не используйте слово list
как имя переменной, так как оно уже используется для типа list
.
Я новичок в python. Получил код, который работает и понятен
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
for str in my_list:
if 'abc' in str:
print(str)
Это самый короткий путь:
if 'abc' in str(my_list):
Вопрос: укажите информацию об abc
a = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
aa = [ string for string in a if "abc" in string]
print(aa)
Output => ['abc-123', 'abc-456']