问:
Segmenting characters from a license plate with OpenCV
I cleaned a patent plate to read the characters. Now, I am stuck in a part where I must segment the characters.

For the phase of cleaning the plate I do this:

To this:

Now the idea is to be able to segment the characters and then be able to read it with a neural network that I developed, For segmentation I carry this but still don't understand why it doesn't work:

```<code># Create sort_contours() function to grab the contour of each digit from left to right
def sort_contours(cnts,reverse = False):
    i = 0
    boundingBoxes = [cv2.boundingRect(c) for c in cnts]
    (cnts, boundingBoxes) = zip(*sorted(zip(cnts, boundingBoxes),
                                        key=lambda b: b[1][i], reverse=reverse))
    return cnts

cont, _  = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# creat a copy version "test_roi" of plat_image to draw bounding box
test_roi = plate_image.copy()

# Initialize a list which will be used to append charater image
crop_characters = []

# define standard width and height of character
digit_w, digit_h = 40, 80

for c in sort_contours(cont):
    (x, y, w, h) = cv2.boundingRect(c)
    ratio = h/w
    if 1<=ratio<=3.5: # Only select contour with defined ratio
        if h/plate_image.shape[0]>=0.1: # Select contour which has the height larger than 50% of the plate
            # Draw bounding box arroung digit number
            cv2.rectangle(test_roi, (x, y), (x + w, y + h), (0, 255,0), 2)

            # Sperate number and gibe prediction
            curr_num = thre_mor[y:y+h,x:x+w]
            curr_num = cv2.resize(curr_num, dsize=(digit_w, digit_h))
            _, curr_num = cv2.threshold(curr_num, 220, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
            crop_characters.append(curr_num)

print("Detect {} letters...".format(len(crop_characters)))
fig = plt.figure(figsize=(10,6))
plt.axis(False)
plt.imshow(test_roi)
</code>```

How could I make the implementation correct? Any help is welcome!

答:
If you want to label them by a neural network the first step of cleaning up is not needed. If you look it to region propose neural network (rnn, fast-rnn, faster-rnn, yolo, mask-rnn ect.) they will do the segmentation and classification in one go.

If you do want to go for segmentation first look in to connected components. It will select all the positive pixels what are connected together.

Body:
I cleaned a patent plate to read the characters. Now, I am stuck in a part where I must segment the characters.

For the phase of cleaning the plate I do this:

To this:

Now the idea is to be able to segment the characters and then be able to read it with a neural network that I developed, For segmentation I carry this but still don't understand why it doesn't work:

# Create sort_contours() function to grab the contour of each digit from left to right
def sort_contours(cnts,reverse = False):
    i = 0
    boundingBoxes = [cv2.boundingRect(c) for c in cnts]
    (cnts, boundingBoxes) = zip(*sorted(zip(cnts, boundingBoxes),
                                        key=lambda b: b[1][i], reverse=reverse))
    return cnts

cont, _  = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# creat a copy version "test_roi" of plat_image to draw bounding box
test_roi = plate_image.copy()

# Initialize a list which will be used to append charater image
crop_characters = []

# define standard width and height of character
digit_w, digit_h = 40, 80

for c in sort_contours(cont):
    (x, y, w, h) = cv2.boundingRect(c)
    ratio = h/w
    if 1<=ratio<=3.5: # Only select contour with defined ratio
        if h/plate_image.shape[0]>=0.1: # Select contour which has the height larger than 50% of the plate
            # Draw bounding box arroung digit number
            cv2.rectangle(test_roi, (x, y), (x + w, y + h), (0, 255,0), 2)

            # Sperate number and gibe prediction
            curr_num = thre_mor[y:y+h,x:x+w]
            curr_num = cv2.resize(curr_num, dsize=(digit_w, digit_h))
            _, curr_num = cv2.threshold(curr_num, 220, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
            crop_characters.append(curr_num)

print("Detect {} letters...".format(len(crop_characters)))
fig = plt.figure(figsize=(10,6))
plt.axis(False)
plt.imshow(test_roi)

How could I make the implementation correct? Any help is welcome!


来源: stackexchange

问:
Vuetify Child Router View displaying incorrectly
I'm trying to have a child router-view display as content for surrounding components.

My routing looks as follows:

```<code>{
    path: "/login",
    name: "TheLoginView",
    component: TheLoginView,
  },
  {
    path: "/dashboard",
    name: "TheDashboard",
    component: () => import("@/views/TheDashboard"),
    children: [
      {
        path: "",
        name: "DashboardView",
        component: () => import("@/components/dashboard/DashboardView"),
        children: [
          {
            name: "Place Order",
            path: "place-order",
            component: () => import("@/views/ThePlaceOrderView"),
          },
          {
            name: "Previous Orders",
            path: "Past-orders",
            component: () => import("@/components/ThePastOrders"),
          },
          {
            name: "Account Options",
            path: "account-options",
            component: () => import("@/components/TheAccountOptions"),
          },
        ],
      },
    ],
  },
</code>```

My Dashboard component looks as follows:

```<code><template>
  <v-app>
    <DashboardAppBar />

    <DashboardNavDrawer />

    <DashboardView />

    <DashboardFooter />
  </v-app>
</template>
</code>```

The issue I'm having is the DashboardView is being rendered below the navdrawer instead of the expected result which is next to it.

The result I'm getting with any combination of v-app or v-content is as follows:

Currently the DashboardView component looks as follows:

```<code><template>
  <router-view />
</template>
</code>```

I'm a bit lost as to what I need to be changing/adding/removing in order to get the child router-view to display next to the drawer

答:
I was able to fix the above using the 'app' prop for the components mentioned.

The below example uses my DashboardNavDrawer component where I added 'app to the  component:

```<code><template>
  <v-navigation-drawer app class="deep-purple accent-4" dark permanent>
    <v-list>
      <v-list-item
        class="mx-2"
        v-for="(item, index) in mainMenuItems"
        :key="index"
        link
        :to="item.to"
      >
        <v-list-item-icon>
          <v-icon>{{ item.icon }}</v-icon>
        </v-list-item-icon>
        <v-list-item-content>
          <v-list-item-title>
            {{ item.name }}
          </v-list-item-title>
        </v-list-item-content>
      </v-list-item>
    </v-list>
  </v-navigation-drawer>
</template>
</code>```

Adding this prop has made it look like the following screenshot which is the desired outcome:

The comment provided by YomS. lead me to this answer so I'd like to express appreciation for his help!

ContentLicense: CC BY-SA 4.0

Body:
I'm trying to have a child router-view display as content for surrounding components.

My routing looks as follows:

{
    path: "/login",
    name: "TheLoginView",
    component: TheLoginView,
  },
  {
    path: "/dashboard",
    name: "TheDashboard",
    component: () => import("@/views/TheDashboard"),
    children: [
      {
        path: "",
        name: "DashboardView",
        component: () => import("@/components/dashboard/DashboardView"),
        children: [
          {
            name: "Place Order",
            path: "place-order",
            component: () => import("@/views/ThePlaceOrderView"),
          },
          {
            name: "Previous Orders",
            path: "Past-orders",
            component: () => import("@/components/ThePastOrders"),
          },
          {
            name: "Account Options",
            path: "account-options",
            component: () => import("@/components/TheAccountOptions"),
          },
        ],
      },
    ],
  },

My Dashboard component looks as follows:

<template>
  <v-app>
    <DashboardAppBar />

    <DashboardNavDrawer />

    <DashboardView />

    <DashboardFooter />
  </v-app>
</template>

The issue I'm having is the DashboardView is being rendered below the navdrawer instead of the expected result which is next to it.

The result I'm getting with any combination of v-app or v-content is as follows:

Currently the DashboardView component looks as follows:

<template>
  <router-view />
</template>

I'm a bit lost as to what I need to be changing/adding/removing in order to get the child router-view to display next to the drawer

Body:
I was able to fix the above using the 'app' prop for the components mentioned.

The below example uses my DashboardNavDrawer component where I added 'app to the  component:

<template>
  <v-navigation-drawer app class="deep-purple accent-4" dark permanent>
    <v-list>
      <v-list-item
        class="mx-2"
        v-for="(item, index) in mainMenuItems"
        :key="index"
        link
        :to="item.to"
      >
        <v-list-item-icon>
          <v-icon>{{ item.icon }}</v-icon>
        </v-list-item-icon>
        <v-list-item-content>
          <v-list-item-title>
            {{ item.name }}
          </v-list-item-title>
        </v-list-item-content>
      </v-list-item>
    </v-list>
  </v-navigation-drawer>
</template>

Adding this prop has made it look like the following screenshot which is the desired outcome:

The comment provided by YomS. lead me to this answer so I'd like to express appreciation for his help!


问:
How can I remove tab from the toolbar of primeng p-editor in angular 8?
This is m code. tabIndex ="-1" works for most of them but it doesnot work with select tag and with "ql-image". I want to remove all the tab from them and want the focus to be directly in editor box instead of tools.</p>

```<code> <p-editor #editor required [(ngModel)]="comment.comment" name="comment"  class="pEditor"
        [style]="{ height: '180px', 'font-size': '1.2em' }">

        <p-header>

          <span class="ql-formats">
            <select class="ql-header" tabindex="-1">
              <option value="1" tabindex="-1">Heading</option>
              <option value="2" tabindex="-1">Subheading</option>
              <option selected tabindex="-1">Normal</option>
            </select>
            <select class="ql-font" tabindex="-1">
              <option selected tabindex="-1">Sans Serif</option>
              <option value="serif" tabindex="-1">Serif</option>
              <option value="monospace" tabindex="-1">Monospace</option>
            </select>
          </span>
          <span class="ql-formats">
            <button class="ql-bold" aria-label="Bold" tabindex="-1"></button>
            <button class="ql-italic" aria-label="Italic" tabindex="-1"></button>
            <button class="ql-underline" aria-label="Underline" tabindex="-1"></button>
          </span>
          <span class="ql-formats">
            <select class="ql-color" tabindex="2"></select>
            <select class="ql-background" tabindex="2"></select>
          </span>
          <span class="ql-formats">
            <button class="ql-list" value="ordered" aria-label="Ordered List" tabindex="-1"></button>
            <button class="ql-list" value="bullet" aria-label="Unordered List" tabindex="-1"></button>
            <select class="ql-align">
              <option selected tabindex="-1"></option>
              <option value="center" tabindex="-1"></option>
              <option value="right" tabindex="-1"></option>
              <option value="justify" tabindex="-1"></option>
            </select>
          </span>
          <span class="ql-formats">
            <button class="ql-link" aria-label="Insert Link" tabindex="-1"></button>
            <button class="ql-image" aria-label="Insert Image" tabindex="-1"></button>
            <button class="ql-code-block" aria-label="Insert Code Block" tabindex="-1"></button>
          </span>
          <span class="ql-formats">
            <button class="ql-clean" aria-label="Remove Styles" tabindex="-1"></button>
          </span>
        </p-header>
      </p-editor>
</code>```

答:
You had almost achieved this but added tabindex="-1" on wrong place in select box.

```<code> <select class="ql-header" tabindex="-1">
</code>```

            <select class="ql-header" tabindex="-1">
              <option value="1" tabindex="-1">Heading</option>
              <option value="2" tabindex="-1">Subheading</option>
              <option selected tabindex="-1">Normal</option>
            </select>
            <select class="ql-font" tabindex="-1">
              <option selected tabindex="-1">Sans Serif</option>
              <option value="serif" tabindex="-1">Serif</option>
              <option value="monospace" tabindex="-1">Monospace</option>
            </select>

            <button class="ql-bold" aria-label="Bold" tabindex="-1"></button>
            <button class="ql-italic" aria-label="Italic" tabindex="-1"></button>
            <button class="ql-underline" aria-label="Underline" tabindex="-1"></button>

            <select class="ql-color" tabindex="-1"></select>
            <select class="ql-background" tabindex="-1"></select>

            <button class="ql-list" value="ordered" aria-label="Ordered List" tabindex="-1"></button>
            <button class="ql-list" value="bullet" aria-label="Unordered List" tabindex="-1"></button>
            <select class="ql-align" tabindex="-1">
              <option selected tabindex="-1"></option>
              <option value="center" tabindex="-1"></option>
              <option value="right" tabindex="-1"></option>
              <option value="justify" tabindex="-1"></option>
            </select>

            <button class="ql-link" aria-label="Insert Link" tabindex="-1"></button>
            <button class="ql-image" aria-label="Insert Image" tabindex="-1"></button>
            <button class="ql-code-block" aria-label="Insert Code Block" tabindex="-1"></button>

            <button class="ql-clean" aria-label="Remove Styles" tabindex="-1"></button>

```
</div>
</div>
</p>

<p>Update 1</p>

<p>primeng doesn't remove tabindex from selected span. </p>

<p>You have to remove this in your ngAfterViewInit method</p>

<p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre class="snippet-code-js lang-js prettyprint-override"><code>ngAfterViewInit() {
  const spans = document.getElementsByClassName('ql-picker-label');
  for (let i = 0; i < spans.length; i++) {
    spans[i].removeAttribute('tabindex');
  }
}</code>```

Here is stackblitz link.

Body:
This is m code. tabIndex ="-1" works for most of them but it doesnot work with select tag and with "ql-image". I want to remove all the tab from them and want the focus to be directly in editor box instead of tools.

            <select class="ql-header" tabindex="-1">
              <option value="1" tabindex="-1">Heading</option>
              <option value="2" tabindex="-1">Subheading</option>
              <option selected tabindex="-1">Normal</option>
            </select>
            <select class="ql-font" tabindex="-1">
              <option selected tabindex="-1">Sans Serif</option>
              <option value="serif" tabindex="-1">Serif</option>
              <option value="monospace" tabindex="-1">Monospace</option>
            </select>

            <button class="ql-bold" aria-label="Bold" tabindex="-1"></button>
            <button class="ql-italic" aria-label="Italic" tabindex="-1"></button>
            <button class="ql-underline" aria-label="Underline" tabindex="-1"></button>

            <select class="ql-color" tabindex="2"></select>
            <select class="ql-background" tabindex="2"></select>

            <button class="ql-list" value="ordered" aria-label="Ordered List" tabindex="-1"></button>
            <button class="ql-list" value="bullet" aria-label="Unordered List" tabindex="-1"></button>
            <select class="ql-align">
              <option selected tabindex="-1"></option>
              <option value="center" tabindex="-1"></option>
              <option value="right" tabindex="-1"></option>
              <option value="justify" tabindex="-1"></option>
            </select>

            <button class="ql-link" aria-label="Insert Link" tabindex="-1"></button>
            <button class="ql-image" aria-label="Insert Image" tabindex="-1"></button>
            <button class="ql-code-block" aria-label="Insert Code Block" tabindex="-1"></button>

            <button class="ql-clean" aria-label="Remove Styles" tabindex="-1"></button>

Body:
You had almost achieved this but added tabindex="-1" on wrong place in select box.

 <select class="ql-header" tabindex="-1">

<p-editor #editor required name="comment" class="pEditor" [style]="{ height: '180px', 'font-size': '1.2em' }">

  <p-header>

    <span class="ql-formats">
            <select class="ql-header" tabindex="-1">
              <option value="1" tabindex="-1">Heading</option>
              <option value="2" tabindex="-1">Subheading</option>
              <option selected tabindex="-1">Normal</option>
            </select>
            <select class="ql-font" tabindex="-1">
              <option selected tabindex="-1">Sans Serif</option>
              <option value="serif" tabindex="-1">Serif</option>
              <option value="monospace" tabindex="-1">Monospace</option>
            </select>
          </span>
    <span class="ql-formats">
            <button class="ql-bold" aria-label="Bold" tabindex="-1"></button>
            <button class="ql-italic" aria-label="Italic" tabindex="-1"></button>
            <button class="ql-underline" aria-label="Underline" tabindex="-1"></button>
          </span>
    <span class="ql-formats">
            <select class="ql-color" tabindex="-1"></select>
            <select class="ql-background" tabindex="-1"></select>
          </span>
    <span class="ql-formats">
            <button class="ql-list" value="ordered" aria-label="Ordered List" tabindex="-1"></button>
            <button class="ql-list" value="bullet" aria-label="Unordered List" tabindex="-1"></button>
            <select class="ql-align" tabindex="-1">
              <option selected tabindex="-1"></option>
              <option value="center" tabindex="-1"></option>
              <option value="right" tabindex="-1"></option>
              <option value="justify" tabindex="-1"></option>
            </select>
          </span>
    <span class="ql-formats">
            <button class="ql-link" aria-label="Insert Link" tabindex="-1"></button>
            <button class="ql-image" aria-label="Insert Image" tabindex="-1"></button>
            <button class="ql-code-block" aria-label="Insert Code Block" tabindex="-1"></button>
          </span>
    <span class="ql-formats">
            <button class="ql-clean" aria-label="Remove Styles" tabindex="-1"></button>
          </span>
  </p-header>
</p-editor>

Update 1

primeng doesn't remove tabindex from selected span.

You have to remove this in your ngAfterViewInit method

ngAfterViewInit() {
  const spans = document.getElementsByClassName('ql-picker-label');
  for (let i = 0; i < spans.length; i++) {
    spans[i].removeAttribute('tabindex');
  }
}

Here is stackblitz link.


问:
Unable to compile the hiredis sds file
Error deferencing pointer to incomplete the type struct
Error invalid applicaion of sizof to incomplete type of struct
I am trying to compile this sds file to run the redis with the help of QT. I have used the pack macro as described in the https://stackoverflow.com/a/3312896 and it has taken care the definition and the semicolon issue as well. I am running the rdm using QT Creater and building it with the help of MINGW(\rdm\build-rdm-Desktop_Qt_5_9_9_MinGW_32bit-Release). When I am building it I am getting the error "Invalid application of sizeof to incomplete type with a struct". I will be also attaching the snapshot for the same. Need help to resolve this.</p>

```<code>          `/* SDSLib 2.0 -- A C dynamic strings library
     *
     * Copyright (c) 2006-2015, Salvatore Sanfilippo <antirez at gmail dot com>
     * Copyright (c) 2015, Oran Agra
     * Copyright (c) 2015, Redis Labs, Inc
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions are met:
     *
     *   * Redistributions of source code must retain the above copyright notice,
     *     this list of conditions and the following disclaimer.
     *   * Redistributions in binary form must reproduce the above copyright
     *     notice, this list of conditions and the following disclaimer in the
     *     documentation and/or other materials provided with the distribution.
     *   * Neither the name of Redis nor the names of its contributors may be used
     *     to endorse or promote products derived from this software without
     *     specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     * POSSIBILITY OF SUCH DAMAGE.
     */

    #ifndef __SDS_H
    #define __SDS_H

    #define SDS_MAX_PREALLOC (1024*1024)

    #include <sys/types.h>
    #include <stdarg.h>
    #include <stdint.h>

    #ifdef __GNUC__
    #define PACK( __Declaration__ ) VA_ARGS __attribute__((__packed__))
    #endif

    #ifdef _MSC_VER
    #define PACK( __Declaration__ ) __pragma( pack(push, 1) ) __Declaration__ __pragma( pack(pop))
    #endif

    typedef char *sds;

    /* Note: sdshdr5 is never used, we just access the flags byte directly.
     * However is here to document the layout of type 5 SDS strings. */
    PACK(struct __attribute__ ((__packed__)) sdshdr5
    {
        unsigned char flags; /* 3 lsb of type, and 5 msb of string length */
        char buf[];
    });
    PACK(struct __attribute__ ((__packed__)) sdshdr8
    {
        uint8_t len; /* used */
        uint8_t alloc; /* excluding the header and null terminator */
        unsigned char flags; /* 3 lsb of type, 5 unused bits */
        char buf[];
    });
    PACK(struct __attribute__ ((__packed__)) sdshdr16 {
        uint16_t len; /* used */
        uint16_t alloc; /* excluding the header and null terminator */
        unsigned char flags; /* 3 lsb of type, 5 unused bits */
        char buf[];
    });
    PACK(struct __attribute__ ((__packed__)) sdshdr32 {
        uint32_t len; /* used */
        uint32_t alloc; /* excluding the header and null terminator */
        unsigned char flags; /* 3 lsb of type, 5 unused bits */
        char buf[];
    });
    PACK(struct __attribute__ ((__packed__)) sdshdr64 {
        uint64_t len; /* used */
        uint64_t alloc; /* excluding the header and null terminator */
        unsigned char flags; /* 3 lsb of type, 5 unused bits */
        char buf[];
    });

    #define SDS_TYPE_5  0
    #define SDS_TYPE_8  1
    #define SDS_TYPE_16 2
    #define SDS_TYPE_32 3
    #define SDS_TYPE_64 4
    #define SDS_TYPE_MASK 7
    #define SDS_TYPE_BITS 3
    #define SDS_HDR_VAR(T,s) struct sdshdr##T *sh = (struct sdshdr##T *)((s)-(sizeof(struct sdshdr##T)));
    #define SDS_HDR(T,s) ((struct sdshdr##T *)((s)-(sizeof(struct sdshdr##T))))
    #define SDS_TYPE_5_LEN(f) ((f)>>SDS_TYPE_BITS)

    static inline size_t sdslen(const sds s) {
        unsigned char flags = s[-1];
        switch(flags&SDS_TYPE_MASK) {
            case SDS_TYPE_5:
                return SDS_TYPE_5_LEN(flags);
            case SDS_TYPE_8:
                return SDS_HDR(8,s)->len;
            case SDS_TYPE_16:
                return SDS_HDR(16,s)->len;
            case SDS_TYPE_32:
                return SDS_HDR(32,s)->len;
            case SDS_TYPE_64:
                return SDS_HDR(64,s)->len;
        }
        return 0;
    }

    static inline size_t sdsavail(const sds s) {
        unsigned char flags = s[-1];
        switch(flags&SDS_TYPE_MASK) {
            case SDS_TYPE_5: {
                return 0;
            }
            case SDS_TYPE_8: {
                SDS_HDR_VAR(8,s);
                return sh->alloc - sh->len;
            }
            case SDS_TYPE_16: {
                SDS_HDR_VAR(16,s);
                return sh->alloc - sh->len;
            }
            case SDS_TYPE_32: {
                SDS_HDR_VAR(32,s);
                return sh->alloc - sh->len;
            }
            case SDS_TYPE_64: {
                SDS_HDR_VAR(64,s);
                return sh->alloc - sh->len;
            }
        }
        return 0;
    }

    static inline void sdssetlen(sds s, size_t newlen) {
        unsigned char flags = s[-1];
        switch(flags&SDS_TYPE_MASK) {
            case SDS_TYPE_5:
                {
                    unsigned char *fp = ((unsigned char*)s)-1;
                    *fp = SDS_TYPE_5 | (newlen << SDS_TYPE_BITS);
                }
                break;
            case SDS_TYPE_8:
                SDS_HDR(8,s)->len = newlen;
                break;
            case SDS_TYPE_16:
                SDS_HDR(16,s)->len = newlen;
                break;
            case SDS_TYPE_32:
                SDS_HDR(32,s)->len = newlen;
                break;
            case SDS_TYPE_64:
                SDS_HDR(64,s)->len = newlen;
                break;
        }
    }

    static inline void sdsinclen(sds s, size_t inc) {
        unsigned char flags = s[-1];
        switch(flags&SDS_TYPE_MASK) {
            case SDS_TYPE_5:
                {
                    unsigned char *fp = ((unsigned char*)s)-1;
                    unsigned char newlen = SDS_TYPE_5_LEN(flags)+inc;
                    *fp = SDS_TYPE_5 | (newlen << SDS_TYPE_BITS);
                }
                break;
            case SDS_TYPE_8:
                SDS_HDR(8,s)->len += inc;
                break;
            case SDS_TYPE_16:
                SDS_HDR(16,s)->len += inc;
                break;
            case SDS_TYPE_32:
                SDS_HDR(32,s)->len += inc;
                break;
            case SDS_TYPE_64:
                SDS_HDR(64,s)->len += inc;
                break;
        }
    }

    /* sdsalloc() = sdsavail() + sdslen() */
    static inline size_t sdsalloc(const sds s) {
        unsigned char flags = s[-1];
        switch(flags&SDS_TYPE_MASK) {
            case SDS_TYPE_5:
                return SDS_TYPE_5_LEN(flags);
            case SDS_TYPE_8:
                return SDS_HDR(8,s)->alloc;
            case SDS_TYPE_16:
                return SDS_HDR(16,s)->alloc;
            case SDS_TYPE_32:
                return SDS_HDR(32,s)->alloc;
            case SDS_TYPE_64:
                return SDS_HDR(64,s)->alloc;
        }
        return 0;
    }

    static inline void sdssetalloc(sds s, size_t newlen) {
        unsigned char flags = s[-1];
        switch(flags&SDS_TYPE_MASK) {
            case SDS_TYPE_5:
                /* Nothing to do, this type has no total allocation info. */
                break;
            case SDS_TYPE_8:
                SDS_HDR(8,s)->alloc = newlen;
                break;
            case SDS_TYPE_16:
                SDS_HDR(16,s)->alloc = newlen;
                break;
            case SDS_TYPE_32:
                SDS_HDR(32,s)->alloc = newlen;
                break;
            case SDS_TYPE_64:
                SDS_HDR(64,s)->alloc = newlen;
                break;
        }
    }

    sds sdsnewlen(const void *init, size_t initlen);
    sds sdsnew(const char *init);
    sds sdsempty(void);
    sds sdsdup(const sds s);
    void sdsfree(sds s);
    sds sdsgrowzero(sds s, size_t len);
    sds sdscatlen(sds s, const void *t, size_t len);
    sds sdscat(sds s, const char *t);
    sds sdscatsds(sds s, const sds t);
    sds sdscpylen(sds s, const char *t, size_t len);
    sds sdscpy(sds s, const char *t);

    sds sdscatvprintf(sds s, const char *fmt, va_list ap);
    #ifdef __GNUC__
    sds sdscatprintf(sds s, const char *fmt, ...)
        __attribute__((format(printf, 2, 3)));
    #else
    sds sdscatprintf(sds s, const char *fmt, ...);
    #endif

    sds sdscatfmt(sds s, char const *fmt, ...);
    sds sdstrim(sds s, const char *cset);
    void sdsrange(sds s, int start, int end);
    void sdsupdatelen(sds s);
    void sdsclear(sds s);
    int sdscmp(const sds s1, const sds s2);
    sds *sdssplitlen(const char *s, int len, const char *sep, int seplen, int *count);
    void sdsfreesplitres(sds *tokens, int count);
    void sdstolower(sds s);
    void sdstoupper(sds s);
    sds sdsfromlonglong(long long value);
    sds sdscatrepr(sds s, const char *p, size_t len);
    sds *sdssplitargs(const char *line, int *argc);
    sds sdsmapchars(sds s, const char *from, const char *to, size_t setlen);
    sds sdsjoin(char **argv, int argc, char *sep);
    sds sdsjoinsds(sds *argv, int argc, const char *sep, size_t seplen);

    /* Low level functions exposed to the user API */
    sds sdsMakeRoomFor(sds s, size_t addlen);
    void sdsIncrLen(sds s, int incr);
    sds sdsRemoveFreeSpace(sds s);
    size_t sdsAllocSize(sds s);
    void *sdsAllocPtr(sds s);

    /* Export the allocator used by SDS to the program using SDS.
     * Sometimes the program SDS is linked to, may use a different set of
     * allocators, but may want to allocate or free things that SDS will
     * respectively free or allocate. */
    void *sds_malloc(size_t size);
    void *sds_realloc(void *ptr, size_t size);
    void sds_free(void *ptr);

    #ifdef REDIS_TEST
    int sdsTest(int argc, char *argv[]);
    #endif

    #endif
    `
</code>```

答:
What it means is that sizeof(struct sdshdr##T) doesn't work because when compiling that struct sdshdr##T was not defined yet, so its size can't be determined yet.

Typically you need to define the struct before this, for example by including the header file that defines it.

Title: Unable to compile the hiredis sds file

Body:
Error deferencing pointer to incomplete the type struct
Error invalid applicaion of sizof to incomplete type of struct
I am trying to compile this sds file to run the redis with the help of QT. I have used the pack macro as described in the https://stackoverflow.com/a/3312896 and it has taken care the definition and the semicolon issue as well. I am running the rdm using QT Creater and building it with the help of MINGW(\rdm\build-rdm-Desktop_Qt_5_9_9_MinGW_32bit-Release). When I am building it I am getting the error "Invalid application of sizeof to incomplete type with a struct". I will be also attaching the snapshot for the same. Need help to resolve this.

          `/* SDSLib 2.0 -- A C dynamic strings library
     *
     * Copyright (c) 2006-2015, Salvatore Sanfilippo <antirez at gmail dot com>
     * Copyright (c) 2015, Oran Agra
     * Copyright (c) 2015, Redis Labs, Inc
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions are met:
     *
     *   * Redistributions of source code must retain the above copyright notice,
     *     this list of conditions and the following disclaimer.
     *   * Redistributions in binary form must reproduce the above copyright
     *     notice, this list of conditions and the following disclaimer in the
     *     documentation and/or other materials provided with the distribution.
     *   * Neither the name of Redis nor the names of its contributors may be used
     *     to endorse or promote products derived from this software without
     *     specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     * POSSIBILITY OF SUCH DAMAGE.
     */

    #ifndef __SDS_H
    #define __SDS_H

    #define SDS_MAX_PREALLOC (1024*1024)

    #include <sys/types.h>
    #include <stdarg.h>
    #include <stdint.h>

    #ifdef __GNUC__
    #define PACK( __Declaration__ ) VA_ARGS __attribute__((__packed__))
    #endif

    #ifdef _MSC_VER
    #define PACK( __Declaration__ ) __pragma( pack(push, 1) ) __Declaration__ __pragma( pack(pop))
    #endif

    typedef char *sds;

    /* Note: sdshdr5 is never used, we just access the flags byte directly.
     * However is here to document the layout of type 5 SDS strings. */
    PACK(struct __attribute__ ((__packed__)) sdshdr5
    {
        unsigned char flags; /* 3 lsb of type, and 5 msb of string length */
        char buf[];
    });
    PACK(struct __attribute__ ((__packed__)) sdshdr8
    {
        uint8_t len; /* used */
        uint8_t alloc; /* excluding the header and null terminator */
        unsigned char flags; /* 3 lsb of type, 5 unused bits */
        char buf[];
    });
    PACK(struct __attribute__ ((__packed__)) sdshdr16 {
        uint16_t len; /* used */
        uint16_t alloc; /* excluding the header and null terminator */
        unsigned char flags; /* 3 lsb of type, 5 unused bits */
        char buf[];
    });
    PACK(struct __attribute__ ((__packed__)) sdshdr32 {
        uint32_t len; /* used */
        uint32_t alloc; /* excluding the header and null terminator */
        unsigned char flags; /* 3 lsb of type, 5 unused bits */
        char buf[];
    });
    PACK(struct __attribute__ ((__packed__)) sdshdr64 {
        uint64_t len; /* used */
        uint64_t alloc; /* excluding the header and null terminator */
        unsigned char flags; /* 3 lsb of type, 5 unused bits */
        char buf[];
    });

    #define SDS_TYPE_5  0
    #define SDS_TYPE_8  1
    #define SDS_TYPE_16 2
    #define SDS_TYPE_32 3
    #define SDS_TYPE_64 4
    #define SDS_TYPE_MASK 7
    #define SDS_TYPE_BITS 3
    #define SDS_HDR_VAR(T,s) struct sdshdr##T *sh = (struct sdshdr##T *)((s)-(sizeof(struct sdshdr##T)));
    #define SDS_HDR(T,s) ((struct sdshdr##T *)((s)-(sizeof(struct sdshdr##T))))
    #define SDS_TYPE_5_LEN(f) ((f)>>SDS_TYPE_BITS)

    static inline size_t sdslen(const sds s) {
        unsigned char flags = s[-1];
        switch(flags&SDS_TYPE_MASK) {
            case SDS_TYPE_5:
                return SDS_TYPE_5_LEN(flags);
            case SDS_TYPE_8:
                return SDS_HDR(8,s)->len;
            case SDS_TYPE_16:
                return SDS_HDR(16,s)->len;
            case SDS_TYPE_32:
                return SDS_HDR(32,s)->len;
            case SDS_TYPE_64:
                return SDS_HDR(64,s)->len;
        }
        return 0;
    }

    static inline size_t sdsavail(const sds s) {
        unsigned char flags = s[-1];
        switch(flags&SDS_TYPE_MASK) {
            case SDS_TYPE_5: {
                return 0;
            }
            case SDS_TYPE_8: {
                SDS_HDR_VAR(8,s);
                return sh->alloc - sh->len;
            }
            case SDS_TYPE_16: {
                SDS_HDR_VAR(16,s);
                return sh->alloc - sh->len;
            }
            case SDS_TYPE_32: {
                SDS_HDR_VAR(32,s);
                return sh->alloc - sh->len;
            }
            case SDS_TYPE_64: {
                SDS_HDR_VAR(64,s);
                return sh->alloc - sh->len;
            }
        }
        return 0;
    }

    static inline void sdssetlen(sds s, size_t newlen) {
        unsigned char flags = s[-1];
        switch(flags&SDS_TYPE_MASK) {
            case SDS_TYPE_5:
                {
                    unsigned char *fp = ((unsigned char*)s)-1;
                    *fp = SDS_TYPE_5 | (newlen << SDS_TYPE_BITS);
                }
                break;
            case SDS_TYPE_8:
                SDS_HDR(8,s)->len = newlen;
                break;
            case SDS_TYPE_16:
                SDS_HDR(16,s)->len = newlen;
                break;
            case SDS_TYPE_32:
                SDS_HDR(32,s)->len = newlen;
                break;
            case SDS_TYPE_64:
                SDS_HDR(64,s)->len = newlen;
                break;
        }
    }

    static inline void sdsinclen(sds s, size_t inc) {
        unsigned char flags = s[-1];
        switch(flags&SDS_TYPE_MASK) {
            case SDS_TYPE_5:
                {
                    unsigned char *fp = ((unsigned char*)s)-1;
                    unsigned char newlen = SDS_TYPE_5_LEN(flags)+inc;
                    *fp = SDS_TYPE_5 | (newlen << SDS_TYPE_BITS);
                }
                break;
            case SDS_TYPE_8:
                SDS_HDR(8,s)->len += inc;
                break;
            case SDS_TYPE_16:
                SDS_HDR(16,s)->len += inc;
                break;
            case SDS_TYPE_32:
                SDS_HDR(32,s)->len += inc;
                break;
            case SDS_TYPE_64:
                SDS_HDR(64,s)->len += inc;
                break;
        }
    }

    /* sdsalloc() = sdsavail() + sdslen() */
    static inline size_t sdsalloc(const sds s) {
        unsigned char flags = s[-1];
        switch(flags&SDS_TYPE_MASK) {
            case SDS_TYPE_5:
                return SDS_TYPE_5_LEN(flags);
            case SDS_TYPE_8:
                return SDS_HDR(8,s)->alloc;
            case SDS_TYPE_16:
                return SDS_HDR(16,s)->alloc;
            case SDS_TYPE_32:
                return SDS_HDR(32,s)->alloc;
            case SDS_TYPE_64:
                return SDS_HDR(64,s)->alloc;
        }
        return 0;
    }

    static inline void sdssetalloc(sds s, size_t newlen) {
        unsigned char flags = s[-1];
        switch(flags&SDS_TYPE_MASK) {
            case SDS_TYPE_5:
                /* Nothing to do, this type has no total allocation info. */
                break;
            case SDS_TYPE_8:
                SDS_HDR(8,s)->alloc = newlen;
                break;
            case SDS_TYPE_16:
                SDS_HDR(16,s)->alloc = newlen;
                break;
            case SDS_TYPE_32:
                SDS_HDR(32,s)->alloc = newlen;
                break;
            case SDS_TYPE_64:
                SDS_HDR(64,s)->alloc = newlen;
                break;
        }
    }

    sds sdsnewlen(const void *init, size_t initlen);
    sds sdsnew(const char *init);
    sds sdsempty(void);
    sds sdsdup(const sds s);
    void sdsfree(sds s);
    sds sdsgrowzero(sds s, size_t len);
    sds sdscatlen(sds s, const void *t, size_t len);
    sds sdscat(sds s, const char *t);
    sds sdscatsds(sds s, const sds t);
    sds sdscpylen(sds s, const char *t, size_t len);
    sds sdscpy(sds s, const char *t);

    sds sdscatvprintf(sds s, const char *fmt, va_list ap);
    #ifdef __GNUC__
    sds sdscatprintf(sds s, const char *fmt, ...)
        __attribute__((format(printf, 2, 3)));
    #else
    sds sdscatprintf(sds s, const char *fmt, ...);
    #endif

    sds sdscatfmt(sds s, char const *fmt, ...);
    sds sdstrim(sds s, const char *cset);
    void sdsrange(sds s, int start, int end);
    void sdsupdatelen(sds s);
    void sdsclear(sds s);
    int sdscmp(const sds s1, const sds s2);
    sds *sdssplitlen(const char *s, int len, const char *sep, int seplen, int *count);
    void sdsfreesplitres(sds *tokens, int count);
    void sdstolower(sds s);
    void sdstoupper(sds s);
    sds sdsfromlonglong(long long value);
    sds sdscatrepr(sds s, const char *p, size_t len);
    sds *sdssplitargs(const char *line, int *argc);
    sds sdsmapchars(sds s, const char *from, const char *to, size_t setlen);
    sds sdsjoin(char **argv, int argc, char *sep);
    sds sdsjoinsds(sds *argv, int argc, const char *sep, size_t seplen);

    /* Low level functions exposed to the user API */
    sds sdsMakeRoomFor(sds s, size_t addlen);
    void sdsIncrLen(sds s, int incr);
    sds sdsRemoveFreeSpace(sds s);
    size_t sdsAllocSize(sds s);
    void *sdsAllocPtr(sds s);

    /* Export the allocator used by SDS to the program using SDS.
     * Sometimes the program SDS is linked to, may use a different set of
     * allocators, but may want to allocate or free things that SDS will
     * respectively free or allocate. */
    void *sds_malloc(size_t size);
    void *sds_realloc(void *ptr, size_t size);
    void sds_free(void *ptr);

    #ifdef REDIS_TEST
    int sdsTest(int argc, char *argv[]);
    #endif

    #endif
    `


问:
Insert a variable in-between ' ' in a shell osascript command?
I am using a MacOS osascript command in a shell script and I try to run the following command:

```<code>APPNAME=$@

if pgrep -x "$APPNAME" > /dev/null # checking if app is open
then
  echo "Closing..."
  osascript -e 'quit app $APPNAME'

else
  echo "*** The app is not open"
fi
</code>```

Ideally, the command would be osascript -e 'quit app "Calendar"' as an example of a working solution. However, I can't seem to insert a variable in-between ' ' quotation marks.

What would be a workaround?

答:
Trying to build a script dynamically using string interpolation is always fragile. You should pass the app name as an argument to the AppleScript, so that you don't have to worry about escaping any characters through two levels of interpreters.

```<code>APPNAME=$1  # The name should be passed as a single argument.

if pgrep -x "$APPNAME" > /dev/null # checking if app is open
then
  echo "Closing..."
  osascript -e 'on run argv' -e 'quit app (item 1 of argv)' -e 'end run' "$APPNAME"

else
  echo "*** The app is not open"
fi
</code>```

No matter what the value of APPNAME is, you are executing the exact same script; the only difference is the argument that script receives.

Body:
I am using a MacOS osascript command in a shell script and I try to run the following command:

APPNAME=$@

if pgrep -x "$APPNAME" > /dev/null # checking if app is open
then
  echo "Closing..."
  osascript -e 'quit app $APPNAME'

else
  echo "*** The app is not open"
fi

Ideally, the command would be osascript -e 'quit app "Calendar"' as an example of a working solution. However, I can't seem to insert a variable in-between ' ' quotation marks.

What would be a workaround?

Body:
Trying to build a script dynamically using string interpolation is always fragile. You should pass the app name as an argument to the AppleScript, so that you don't have to worry about escaping any characters through two levels of interpreters.

APPNAME=$1  # The name should be passed as a single argument.

if pgrep -x "$APPNAME" > /dev/null # checking if app is open
then
  echo "Closing..."
  osascript -e 'on run argv' -e 'quit app (item 1 of argv)' -e 'end run' "$APPNAME"

else
  echo "*** The app is not open"
fi

No matter what the value of APPNAME is, you are executing the exact same script; the only difference is the argument that script receives.


问:
(Selenium, Python) Having a trouble locating element via relative path
So I have been looping through the list of address,name,phone and been successful at extracting each row from the list.

However, from each row, I want to extract address, name, and phone using relative XPATH but I have been failing. How do I use the relative path to extract what I want? The relative path is used from each row's point of view. Below is my code.

```<code>import time
import requests
import csv
import re
from selenium.webdriver.common.by   import By
from selenium.webdriver             import ActionChains
from bs4        import BeautifulSoup
from selenium   import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(5)
url1 = 'http://subway.co.kr/storeSearch?page='
url2 = '&rgn1Nm=&rgn2Nm=#storeList'

addresses = []
names = []
phones = []

for i in range(1, 42):
    driver.get(url1 + str(i) + url2)
    lst = driver.find_elements_by_xpath('/html/body/div/div[2]/div[2]/div[3]/div/div/div[1]/table/tbody/tr')
    for row in lst:
####### THIS IS WHERE IT NEEDS AN ANSWER ################################################
        address = row.find_element(By.XPATH, ".//td[2]/div/a")
        addresses.append(address.text)
        name = row.find_element(By.XPATH, ".//td[1]/a")
        names.append(name.text)
        phones.append(row.find_element_by_xpath("//div[@class='tel']").text)
######################################################################################
stores = [{
    'address'   : props[0],
    'name'      : props[1],
    'phone'     : props[2]
} for props in zip(addresses, names, phones)]

with open('stores.csv', 'w') as csvfile:
    csvout = csv.DictWriter(csvfile, ['address', 'name', 'phone'])
    csvout.writeheader()
    csvout.writerows(stores)
</code>```

答:
ok.check html of that site. and those relative XPATHs not work because you have something like that:

```<code><body>
    <tr>....</tr>
    <tr>....</tr>
    <tr>....</tr>
    <tr>....</tr>
    <tr>....</tr>
    <tr>....</tr>
    <tr>....</tr>
    <tr>....</tr>
    ...
</body>
</code>```

so there are 8  with company data on each page. and each company has a such realtive path for adress:

```<code>..//tr[1]/td[2]/div/a # first company
..//tr[2]/td[2]/div/a # second
</code>```

up to 8 on one page. So it's quite hard to make realtive path to lst. but think you have got all needed data in the lst. i change your code in that way:

```<code> for i in range(1, 42):
        driver.get(url1 + str(i) + url2)
        # change here. you have got
        lst = driver.find_elements_by_xpath('/html/body/div/div[2]/div[2]/div[3]/div/div/div[1]/table/tbody/tr')

        for row in lst:
            r = row.text.split('\n')
            addresses.append(r[2])
            names.append(r[1])
            phones.append(r[4])
</code>```

don't now if column are right because it's written in korean, but outputs are:

addresses:

```<code>['경기 성남시 분당구 백현로101번길 21', '경남 김해시 김해대로 2232 이마트 1층', '경기 시흥시 은계번영길 21', '부산광역시 동구 중앙대로206', '서울시 송파구 송파대로 438 106호, 107호', '경기 화성시 남양읍 시청로 6', '전라북도 전주시 완산구 홍산중앙로 22', '광주 남구 서문대로 749', '광주 광산구 우산동 1588-1', '광주 광역시 북구 북문대로117', '경남 거제시 고현동 35-8 104호,105호', '경상북도 경산시 대동 166-6', '전라남도 무안군 삼향읍 남악3로 79', '대구광역시 중구 달구벌대로 2076', '대구광역시 남구 중앙대로 243', '경기도 성남시 수정구 위례광장로 104', '경기도 수원시 팔달구 아주로 49-1', '부산시 사상구 사상로211', '충청남도 당진시 읍내동 225-1 금화빌딩 1층 101호', '서울특별시 도봉구 도봉로 468, 1층 102호, 102-1호', '서울 서대문구 거북골로 23', '서울 강북구 삼양로 162', '전남 목포 백년대로 342', '대구 동구 검사동 957-21', '경남 진주시 충의로 20-4 101-102호', '대구 서구 달구벌대로 1689', '서울시 관악구 남부순환로 1904', '부산광역시 연제구 종합운동장로 7 부산홈플러스아시아드점 지하2층', '천안 동남구 청당동 512번지', '서울시 강남구 봉은사로 627', '대구 북구 침산남로 157', '대구 수성구 달구벌대로 3201', '서울시 송파구 석촌호수로 298', '광주 광역시 광산구 장신로 133 1층', '경기도 김포시 돌문로 43', '경기도 수원시 영통구 광교중앙로 145', '서울특별시 종로구 대학로10길 11', '대구광역시 수성구 달구벌대로 2513', '부산 해운대구 해운대로 794 엘리움 빌딩 104호', '대구광역시 수성구 지범로 180 1F', '경기도 용인시 수지구 성복2로 38', '대구광역시 달서구 조암로 9', '대구광역시 달성군 현풍읍 테크노상업로 62', '서울시 영등포구 시흥대로 681, 삼성YJ그랜드빌딩 신관동 1층', '부산광역시 부산진구 엄광로 176', '부산광역시 강서구 명지국제8로 264', '서울시 성동구 왕십리로 328', '서울 강남구 논현로 84', '부산광역시 남구 분포로 145 스퀘어동 1055호,1056호', '서울특별시 성북구 화랑로13길 10 (하월곡동)', '울산광역시 문수로 332', '서울시 영등포구 당산동6가 337-23', '광주광역시 서구 치평로 86', '서울시 송파구 송파대로 374', '충청남도 서산시 호수공원 12로 26', '대구광역시 달서구 두류공원로 200', '경기도 용인시 기흥구 동백중앙로 283 골드프라자 A동 105호, 106호', '광주 광산구 첨단중앙로 110 1층', '경기도 성남시 수정구 수정로 179 (신흥동)', '제주도 제주시 아라2동 34-13', '서울 영등포구 양평동4가 101-10', '대구광역시 북구 학정로 422, 1층', '광주광역시 북구 우치로 124, 1층', '부산광역시 해운대구 선수촌로 78', '대구광역시 달서구 월배로 222', '경기도 평택시 비전5로 15', '서울시 송파구 올림픽로 293-19', '대구시 달서구 계대동문로 9', '대구시 중구 동성로 6길 42', '인천광역시 남동구 구월동 1140-4', '수원시 장안구 경수대로 927', '경기도 수원시 영통구 봉영로 1576', '서울특별시 종로구 교북동 35-10', '서울시 강서구 등촌동 717 그레이스힐', '서울시 강서구 마곡동 776-4외 1필지 엠코지니어스타 제에이동 109,110호', '부산광역시 부산진구 동천로 71', '경기도 화성시 동탄지성로 117', '경기도 수원시 영통구 효원로 383', '서울시 중구 새문안로 30', '경기도 오산시 내삼미로 89', '경기도 성남시 분당구 운중로 142 판교메디컬타워 1층', '경기도 김포시 풍무1로 65-1 풍무시티프라자', '서울특별시 영등포구 국제금융로 6길 38', '대구광역시 북구 대학로 87', '서울특별시 강남구 봉은사로 328', '부산광역시 해운대구 센텀1로 17 센텀프리미어호텔 108호', '서울특별시 중구 다산로 153', '서울특별시 종로구 종로 263-1', '서울특별시 동대문구 답십리로 293', '충청남도 천안시 서북구 충무로 201', '경기도 용인시 기흥구 구갈로 71-18 기흥더샵프라임뷰', '경기도 수원시 영통구 대학로 34', '서울특별시 광진구 능동로 290 삼일빌딩', '서울특별시 동대문구 왕산로 15-1', '경기도 시흥시 비둘기공원로 21 대야하이빌', '부산광역시 동구 조방로 14 동일타워 124호', '서울특별시 구로구 경인로 445 동양미래대 8호관', '인천광역시 서구 탁옥로 50', '경기도 성남시 중원구 산성대로372번길 10', '서울특별시 강동구 동남로 75길 13-10', '경상남도 진주시 새평거로 136', '대전광역시 중구 대종로 488번길 25', '경기도 수원시 권선구 금곡로 204', '서울특별시 마포구 월드컵북로54길 25 상암DMC 푸르지오시티 103호', '서울특별시 광진구 아차산로 480', '광주광역시 동구 중앙로 160번길 31-18', '충청북도 청주시 서원구 1순환로 676', '제주특별자치도 제주시 중앙로 252', '제주특별자치도 제주시 국기로 1길 2', '전라북도 군산시 공단대로 374', '충청북도 청주시 청원구 대성로 301', '경기도 동두천시 평화로 2552-1', '대구광역시 중구 국채보상로 598', '부산광역시 남구 수영로 246', '부산광역시 동구 중앙대로 365', '부산광역시 연제구 과정로 237번길 119', '부산광역시 금정구 중앙대로 1719번길 30', '부산광역시 영도구 태종로 107', '경상남도 김해시 능동로 149번길 8', '부산광역시 수영구 수영로 462', '부산광역시 동래구 명륜로 187번길 49', '경상남도 김해시 진영읍 김해대로361번길 16', '부산광역시 연제구 중앙대로 1043', '부산광역시 서구 구덕로 226번길 3', '부산광역시 연제구 법원로 32번길 18', '경상남도 김해시 가야로 163', '부산광역시 강서구 명지오션시티4로 61', '경상남도 김해시 인제로 184 1층', '부산광역시 기장군 정관읍 정관로 565', '부산광역시 북구 덕천1길 22', '경상남도 김해시 율하3로 42', '부산광역시 부산진구 양지로 4', '부산광역시 사상구 가야대로 366번길 43', '부산광역시 금정구 금정로 60번길 40', '부산광역시 해운대구 센텀5로 55', '부산광역시 남구 수영로 325번길 12', '부산광역시 부산진구 가야대로 784번길 23', '부산광역시 해운대구 구남로 42-1', '부산광역시 동래구 사직북로 7', '부산광역시 중구 중앙대로 102', '경상남도 김해시 내외중앙로 74', '부산광역시 수영구 광안해변로 239', '부산광역시 금정구 부산대학로 48', '부산광역시 북구 화명신도시로 130', '부산광역시 사하구 낙동대로 542', '부산광역시 남구 용소로 24', '부산광역시 중구 광복중앙로 3-1', '부산광역시 부산진구 중앙대로 690', '경상남도 창원시 성산구 가양로 124번길 5-5 103호', '경상남도 창원시 진해구 냉천로 62', '경상남도 창원시 마산합포구 3.15대로 1', '경상남도 창원시 의창구 용지로 169번길 3', '경상남도 창원시 성산구 중앙대로100번길 9 리베라컨벤션 1층 107호', '경상남도 통영시 통영해안로 317-1', '울산광역시 동구 방어진순환도로 662', '경상남도 창원시 성산구 단정로 25', '경상남도 창원시 마산회원구 합성옛길 137', '경상남도 거창군 거창읍 중앙로 120', '울산광역시 중구 시계탑거리 17', '경상남도 진주시 진양호로 525', '울산광역시 남구 삼산로 11', '경상남도 진주시 진주대로 548', '울산광역시 남구 대학로 108', '울산광역시 남구 삼산로 267번길 6-15', '경상남도 양산시 물금읍 범어로 60', '경상남도 거제시 아주1로2길 62', '울산광역시 남구 신정로 37', '경상남도 양산시 양산역2길 3', '충청남도 아산시 배방읍 모산로 123', '대전광역시 중구 태평로 71', '대전광역시 유성구 계룡로 42-1', '대전광역시 서구 도안북로 93번길 31', '대전광역시 유성구 유성대로 1732', '대전광역시 대덕구 한남로 25번길 5', '대전광역시 동구 동구청로 95', '대전광역시 동구 동대전광역시로 168', '대전광역시 유성구 대학로 291 정문술빌딩 1층', '충청남도 천안시 동남구 대흥로 228 삼영빌딩 104호', '대전광역시 유성구 한밭대로 414', '충청남도 천안시 서북구 불당25로 138', '대전광역시 중구 계백로 1715 102호', '대전광역시 서구 월평북로 95', '대전광역시 서구 문정로 88', '대전광역시 유성구 노은로 150', '충청남도 공주시 흑수골길 35', '충청남도 아산시 번영로224번길 4', '대전광역시 서구 계룡로 626', '대전광역시 서구 둔산로 130 1층 111호', '세종특별자치시 절재로 194', '충청남도 아산시 온궁로 24-2', '충청남도 천안시 서북구 두정로 165', '충청남도 천안시 서북구 월봉로 79', '대전광역시 서구 관저로 142', '대전광역시유성구 관들1길 49', '충청남도 천안시 서북구 서부2길 78', '대전광역시 서구 둔산로 18', '대전광역시 유성구 궁동로18번길 10', '충청남도 천안시 동남구 만남로 22', '경기도 부천시 신흥로 170', '경기도 광명시 광명로 892-1', '경기도 부천시 부일로 725', '경기도 광명시 금하로 464', '경기도 광명시 철산로 15', '경기도 고양시 덕양구 충장로 11', '경기도 김포시 김포한강4로 118', '경기도 시흥시 중심상가로 195', '인천광역시 서구 서곶로 837', '경기도 고양시 덕양구 권율대로 901', '인천광역시 미추홀구 인하로 100', '경기도 고양시 일산서구 중앙로 1581', '인천광역시 남동구 호구포로 818 퍼스트하임프라자 1층', '경기도 고양시 일산서구 일산로 539', '경기도 시흥시 배곧3로 96', '경기도 고양시 일산동구 일산로 233', '경기도 고양시 일산동구 중앙로 1036 1층', '경기도 김포시 김포한강2로23번길 72 2층 213호', '인천광역시 미추홀구 주안로 89', '인천광역시 중구 신도시남로142번길 6', '경기도 고양시 일산서구 일현로 97-11', '경기도 부천시 석천로169번길 22', '인천광역시 계양구 경명대로 1055', '인천광역시 남동구 구월동 1454-1(예술로 140번길 33) 화성빌딩 102호', '경기도 고양시 일산서구 중앙로 1415', '인천광역시 부평구 부평문화로 63', '인천광역시 계양구 계산새로 85', '인천광역시 부평구 체육관로 24', '인천광역시 연수구 먼우금로 194 메카오피스텔', '경기도 고양시 일산동구 장항동 890-5 굿모닝 법조타운 제 1층 101호 (중앙로 1191)', '인천광역시 연수구 송도과학로16번길 33-3 송도 트리플스트리트', '인천광역시 서구 청라라임로 65 라임타워', '인천광역시 남동구 청능대로 583 중앙프라자', '인천광역시 연수구 센트럴로 194 더샵센트럴파크2 A동 108호', '경기도 고양시 덕양구 화정로 69 한화꿈에그린아파트', '경기도 부천시 부일로 448 프리존빌딩', '인천광역시 연수구 신송로 122', '경기도 고양시 일산서구 일산동 1681-1 엑셀런트 빌딩 103호 (일중로 46)', '인천광역시 부평구 부흥로 264', '경기도 부천시 상동로 87 가나베스트타운 103호', '경기도 부천시 부일로 202-13', '경기도 고양시 일산서구 호수로 817', '경기도 고양시 일산동구 정발산로 38 장항동이스턴시티', '경기도 부천시 길주로 288', '경기도 평택시 중앙2로 16', '경기도 수원시 영통구 덕영대로 1707', '경기도 성남시 분당구 성남대로925번길 16', '경기도 용인시 수지구 신수로 767 분당수지유타워 제B동 111호', '경기도 안양시 동안구 관악대로 486', '경기도 용인시 처인구 명지로 17', '경기도 수원시 영통구 센트럴타운로 107', '경기도 용인시 기흥구 죽전로 20 죽전누리에뜰아파트 상가 B동 121호', '경기도 화성시 향남읍 향남로 392 우성메디피아 1층 103호, 104호', '경기도 화성시 효행로 1063', '경기도 성남시 중원구 성남대로997번길 51-20', '경기도 안산시 상록구 한양대학로 60', '경기도 용인시 수지구 광교중앙로 305', '경기도 수원시 영통구 봉영로 1623', '경기도 성남시 분당구 판교로227번길 6', '경기도 안양시 동안구 시민대로327번길 6 112호', '경기도 화성시 동탄대로 181 A동', '경기도 안산시 단원구 예술대학로 17', '경기도 군포시 광정로 60', '경기도 안성시 중앙로 401', '경기도 안산시 상록구 광덕1로 385', '경기도 안양시 만안구 만안로223번길 7', '경기도 화성시 동탄반석로 156 동탄하이페리온', '경기도 평택시 평남로 941', '경기도 안산시 단원구 광덕대로 151', '경기도 화성시 동탄솔빛로 48', '경기도 수원시 장안구 서부로 2066 성균관대학교 학생회관 2층', '경기도 수원시 팔달구 권광로 204', '경기도 용인시 수지구 수지로296번길 47 수석빌딩', '경기도 성남시 분당구 성남대로 43번길 10', '경기도 안양시 동안구 시민대로 167 안양벤처텔', '경기도 안양시 동안구 평촌대로 119 원평비젼프라자', '경기도 성남시 분당구 성남대로916번길 20 노블리치1오피스텔', '경기도 성남시 분당구 성남대로 331번길 13', '경기도 성남시 분당구 돌마로 52', '경기도 수원시 영통구 영통로 195 골든스퀘어', '경기도 성남시 분당구 대왕판교로 670', '경기도 성남시 분당구 서현로 184 엘지분당에클라트', '서울특별시 강남구 선릉로 653', '서울특별시 서초구 강남대로 499', '서울특별시 강남구 압구정로 28길 13', '서울특별시 서초구 법원로1길 1', '서울특별시 강남구 테헤란로 337', '서울특별시 금천구 가산디지털1로 165 가산비지니스센터 102호', '서울특별시 강남구 봉은사로 206 대명빌딩', '서울특별시 영등포구 국회대로62길 25 교육시설재난공제회관', '서울특별시 금천구 시흥대로 399 1층 112호', '서울특별시 강서구 마곡중앙6로 93', '서울특별시 송파구 법원로 114 현대엠스테이트 C동 119호', '서울특별시 영등포구 선유로 70', '서울특별시 강남구 삼성로 520', '서울특별시 동작구 노량진로 166', '서울특별시 영등포구 국회대로 70길 19', '서울특별시 강남구 테헤란로 25길 20', '서울특별시 강동구 성안로 147', '서울특별시 강동구 올림픽로 664', '서울특별시 양천구 목동서로 349 센트럴프라자', '서울특별시 강남구 강남대로66길 6', '서울특별시 서초구 강남대로 535 프린스빌딩', '서울특별시 영등포구 영중로 25', '서울특별시 송파구 올림픽로 130', '서울특별시 동작구 보라매로3길 29 해태보라매타워', '서울특별시 송파구 충민로 5 송파한화오벨리스크', '서울특별시 관악구 신림로 344 SK허브그린', '서울특별시 양천구 오목로 315', '서울특별시 양천구 오목로 238 론드사옥', '서울특별시 강남구 남부순환로 2611', '서울특별시 서초구 서초중앙로22길 47 문화빌딩', '서울특별시 강남구 도산대로 124 대영빌딩', '서울특별시 강남구 일원로3길 4', '서울특별시 동작구 사당로 12-1', '서울특별시 강서구 강서로 159-1', '서울시 서초구 효령로 111, 1층', '서울특별시 동작구 흑석로 79', '서울특별시 관악구 관악로 156', '서울특별시 구로구 디지털로34길 55 코오롱싸이언스밸리 2차 109호', '서울특별시 강남구 강남대로96길 12', '서울특별시 강남구 삼성로 151 선경아파트5동 5', '서울특별시 은평구 서오릉로 150', '서울특별시 중구 장충단로 227-2,1~2F', '서울특별시 성북구 정릉로 77', '서울 중구 명동길 74 명동성당 118호', '서울특별시 광진구 아차산로 241 연한빌딩 102호', '서울특별시 종로구 종로 347', '서울특별시 성동구 아차산로 113', '서울특별시 성동구 왕십리로 410 센트라스', '서울특별시 성동구 왕십리로 108-1', '서울특별시 광진구 천호대로 666', '서울시 종로구 계동길 5', '서울특별시 용산구 한강대로23길 55 아이파크몰 서관 4층', '서울특별시 강북구 도봉로 209', '서울특별시 용산구 청파로 74 전자랜드 본관 A동 104호', '서울특별시 은평구 은평로 108 101호', '서울특별시 광진구 강변역로4길 10', '서울특별시 노원구 광운로 57', '서울특별시 광진구 자양로 113 구의 현대 하이엘 103-4호', '서울특별시 마포구 월드컵로 34길 7', '서울특별시 중구 퇴계로 388', '서울특별시 강북구 오패산로 417', '서울특별시 도봉구 마들로11길 61', '서울특별시 광진구 뚝섬로34길 67 광진트라팰리스 101호, 102호', '서울특별시 성북구 길음로 7길 6', '서울특별시 광진구 동일로20길 106', '서울특별시 마포구 마포대로 109 롯데캐슬프레지던트', '서울특별시 중랑구 용마산로115길 127 한일써너스빌리젠시1단지', '서울특별시 마포구 와우산로 117 102호', '서울특별시 종로구 성균관로 41', '서울특별시 중랑구 망우로 203', '서울특별시 용산구 대사관로 63', '서울특별시 마포구 와우산로 44 1층', '서울특별시 중구 을지로 103-1', '서울특별시 중구 소공로 35 남산롯데캐슬아이리스', '서울특별시 은평구 연서로 215-1', '서울특별시 서대문구 통일로 432-1, 1층', '서울특별시 강북구 도봉로 41-1', '서울특별시 용산구 한강대로30길 25 아스테리움 용산', '서울특별시 서대문구 연세로 23', '서울특별시 중구 칠패로 27 순화동 the# 주상복합', '서울특별시 중구 남대문로 112', '서울특별시 서대문구 북가좌동 수색로 100', '서울특별시 종로구 종로 213-1', '서울특별시 성북구 보문로 34길 78', '서울특별시 마포구 양화로 45 메세나폴리스', '서울특별시 성북구 동소문로 10', '서울특별시 노원구 노해로 502', '서울특별시 종로구 새문안로 3길 19', '서울특별시 서대문구 이화여대7길 30', '서울특별시 종로구 동숭길 101 현대엘리베이터', '서울특별시 종로구 사직로 115', '서울특별시 서대문구 연희로 93 연희오피스텔', '서울특별시 용산구 한강대로 271', '서울특별시 은평구 진관2로 29-21 드림스퀘어', '서울특별시 마포구 월드컵북로 361 DMC 이안상암2단지', '서울특별시 동대문구 경희대로4길 6', '서울특별시 노원구 공릉로 207', '서울특별시 서대문구 연세로 50-1 연세공학원', '서울특별시 종로구 삼일대로 391', '서울특별시 서대문구 충정로 23 풍산빌딩 지하 2층', '서울특별시 광진구 광나루로 390', '서울특별시 마포구 월드컵로 87 마포로얄프라자', '서울특별시 중구 세종대로 68 천일빌딩', '서울특별시 중랑구 망우로 312', '서울특별시 종로구 우정국로 69 동일빌딩', '서울특별시 중구 퇴계로 204', '서울특별시 용산구 후암로 107 게이트웨이타워', '서울특별시 마포구 백범로 11', '서울특별시 성북구 안암동 5가 인촌로 88', '서울특별시 마포구 마포대로 53 마포트라팰리스', '서울특별시 용산구 청파로47길 42', '서울특별시 서대문구 신촌로 121 아남오피스텔', '서울특별시 동대문구 휘경로 14', '서울특별시 마포구 홍익로 10', '서울특별시 종로구 종로 77 통일빌딩', '서울특별시 성동구 마조로 11, 1층', '서울특별시 종로구 창경궁로 234 동화빌딩', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-']
</code>```

names:

```<code>['수내', '김해이마트', '시흥은계', '부산역', '석촌역', '화성남양', '전주전북도청', '광주주월', '광주하남', '광주운암', '거제고현', '경산영남대', '목포남악', '대구반월당', '대구교대', '성남위례', '수원아주대', '부산사상', '당진읍내', '쌍문역', '명지대', '삼양솔샘', '목포상동', '대구동촌DT', '진주혁신', '대구광장', '낙성대역', '부산홈플러스아시아드', '천안청수', '봉은사역', '대구침산', '대구시지', '석촌호수', '광주수완', '김포사우', '광교엘포트', '대학로마로니에', '대구수성구청역', '부산좌동', '대구지산', '수지롯데몰', '대구월성', '대구테크노폴리스', '대림삼거리', '부산동의대', '부산명지국제신도시', '왕십리', '포이사거리', '부산 W스퀘어', '동덕여대', '울산옥동', '당산역', '광주상무', '송파역', '서산호수공원', '대구이월드', '용인동백', '광주첨단', '성남태평', '제주대점', '선유도역점', '대구칠곡3지구', '광주전남대후문', '부산반여점', '대구상인역', '평택비전', '잠실역', '대구계대동문', '대구동성로2호', '인천길병원', '수원장안구청', '수원홈플러스영통', '독립문', '가양역', '양천향교역', '부산서면동천로', '동탄센트럴파크', '수원영통구청', '정동', '오산대역', '서판교', '김포풍무역', '여의도화재보험', '경북대북문', '선정릉역', '부산벡스코', '약수역', '동대문역', '장안사거리', '천안충무로', '용인기흥구청', '광교경기대후문', '군자역', '신설동역', '시흥대야', '부산범일', '동양미래대', '인천서구청', '성남단대오거리역', '고덕역', '진주평거탑마트', '대전은행', '수원호매실', '상암DMC푸르지오시티', '광장', '광주충장로', '청주충북대', '제주시청', '제주연동신시가지', '군산나운', '청주대', '동두천', '대구동성로', '부산대연', '부산진역', '부산토곡', '부산장전역', '부산영도', '김해장유', '부산남천', '부산명륜', '김해진영', '부산시청', '부산부민', '부산법원', '김해삼계', '부산명지', '김해인제대', '부산정관', '부산덕천', '김해율하', '부산양정', '부산주례', '부산대역', '부산센텀', '부산경성대', '부산서면롯데', '부산해운대비치', '부산사직', '부산중앙', '김해내동', '부산광안비치', '부산대', '부산화명', '부산동아대', '부산부경대', '부산광복', '부산서면', '창원대방', '진해석동', '마산경남대', '창원용지호수', '창원리베라', '통영문화마당', '울산일산', '창원상남', '마산합성', '경남거창', '울산성남', '진주중안', '울산공업탑', '진주경상대', '울산무거', '울산삼산', '경남남양산', '거제아주', '울산달동', '경남양산', '아산배방', '대전태평', '대전유성터미널', '대전목원대', '대전전민', '대전한남대', '대전가오', '대전우송대', '대전카이스트', '천안역', '대전충남대정문', '천안신불당', '대전오류', '대전월평선사', '대전탄방', '대전노은', '공주신관', '아산터미널', '대전용문', '대전시청', '세종정부청사', '아산온양', '천안두정', '천안쌍용', '대전관저', '대전관평', '천안성정', '대전둔산', '대전궁동', '천안신부', '부천위브더스테이트', '광명사거리역', '부천역곡역', '광명소하', '광명철산역', '일산행신', '김포장기동', '시흥정왕', '인천완정역', '일산고양삼송', '인천인하대', '일산대화역', '인천모래내시장역', '일산후곡', '시흥배곧신도시', '일산백마학원가', '일산고양터미널', '김포라베니체마치에비뉴', '인천주안역', '인천운서메가스타', '일산탄현', '부천시청', '인천계산역', '인천구월동로데오', '일산주엽역', '인천부평중앙', '인천계양구청', '인천삼산', '인천연수', '일산마두역', '인천송도트리플스트리트', '인천청라', '인천논현', '인천송도센트럴파크', '일산화정', '부천역', '인천송도', '일산산들', '인천부평시장역', '부천상동', '부천송내역', '일산레이킨스몰', '일산동구청', '부천중동', '평택로데오', '수원경희대', '성남터미널', '용인동천', '안양인덕원역', '용인처인', '광교중앙', '용인죽전', '화성향남', '화성병점', '성남시청', '안산한양대', '광교상현역', '수원영통', '판교브릿지타워', '안양평촌스마트스퀘어', '동탄호수공원', '안산중앙', '산본로데오', '안성중앙', '안산한대역', '안양1번가', '동탄하이페리온', '평택소사벌', '안산고잔', '동탄나루', '수원성균관대', '수원인계', '용인수지', '분당오리역', '안양범계', '안양평촌학원가', '분당야탑', '분당정자', '분당미금역', '수원망포역', '판교테크노밸리', '분당서현', '강남구청역', '신논현역', '압구정역', '서초법원', '선릉', '가산디지털단지', '언주역', '여의도KBS 본관', '독산', '발산역', '문정역', '문래', '삼성', '노량진', '여의도국회의사당', '역삼', '강동성심병원', '천호', '양천구청', '강남우성', '논현역', '영등포', '잠실새내역', '보라매', '문정법조', '신림역', '오목교', '목동역', '양재', '교대', '신사역', '대청', '숭실대', '화곡역', '방배점', '중앙대(서울)', '서울대', '구로디지털', '강남역', '대치도곡', '구산역', '동대문역사문화공원역', '국민대학교', '명동성당', '건대입구', '동묘앞역', '성수역', '상왕십리', '서울숲', '아차산역', '북촌', '용산아이파크몰', '미아역', '용산전자랜드', '응암', '강변역', '광운대역', '구의', '마포구청', '신당역', '수유역', '창동역', '뚝섬유원지역', '길음뉴타운', '건대로데오', '공덕역롯데캐슬', '망우', '홍대아트', '성균관대', '중랑역', '한남', '상수역', '을지로3가', '회현', '연신내', '홍제역', '미아사거리역', '용산아스테리움', '신촌로데오', '순화동라마다', '을지로입구', '가재울', '종로5가', '성신여대', '합정역메세나폴리스', '한성대', '노원', '광화문', '이대', '대학로', '경복궁', '연희', '남영역', '구파발역', '상암', '경희대', '공릉', '연세대', '종로삼일대로', '충정로', '세종대', '망원역', '시청', '상봉역', '안국', '충무로역', '서울역동자', '서강대', '고려대', '마포', '숙명여대', '신촌', '외대', '홍대', '종로', '한양대', '성대', '군산 KE (미군부대 매장)', '대구 FC (미군부대 매장)', '왜관 FC (미군부대 매장)', '평택 ZMM (미군부대 매장)', '평택 HMM (미군부대 매장)', '평택 USFKHQ (미군부대 매장)', '평택 TMM (미군부대 매장)', '평택 FC (미군부대 매장)', '오산 FC (미군부대 매장)', '성남 K-16 FC (미군부대 매장)', '용산 DHL (미군부대 매장)']
</code>```

phones:

```<code>['Coming Soon', 'Coming Soon', 'Coming Soon', '070-4090-3721', 'Coming Soon', '031-357-4637', '063-903-1191', '062-456-1181', '062-446-0072', '062-462-1125', '055-634-0979', '053-818-7771', '061-980-3310', '070-4122-0077', '053-622-6348', '031-602-6126', '031-211-0369', '051-900-5226', '041-356-2731', '02-999-5906', '02-374-7300', '02-6952-3399', '061-980-1191', '070-8851-0101', '055-758-0250', '053-573-3030', '02-877-6687', '051-506-0122', '041-414-1421', '02-545-5729', '070-4138-0154', '070-4146-5154', '02-424-0020', '062-419-1131', '070-4234-3277', '031-217-5570', '02-762-5626', '053-744-3688', '051-731-7717', '053-782-5761', '031-5174-2654', '053-643-8400', '070-8844-1379', '02-847-8255', '051-895-0407', '051-292-2588', '02-2295-1800', '02-577-5227', '051-626-3300', '02-6404-2212', '052-271-6600', '02-2636-1014', '062-446-1131', '02-420-2160', '041-663-7852', '070-414-7000', '031-285-4857', '062-413-1121', '031-755-6785', '064-752-7739', '02-2632-1232', '070-4246-5154', '062-452-1121', '051-783-6384', '053-643-0013', '031-652-6777', '02-2202-1300', '053-593-5050', '053-253-7801', '070-8888-3277', '031-244-8490', '031-202-3633', '02-730-8255', '02-2668-6777', '02-3662-6697', '051-817-1232', '031-8003-8825', '031-217-7772', '02-737-0808', '031-378-8004', '031-707-7911', '031-984-0606', '02-6951-1118', '053-951-7802', '02-555-9389', '051-741-6778', '02-2256-9891', '02-747-9809', '02-3390-4970', '041-579-4321', '031-284-3161', '070-7750-2040', '02-456-6444', '02-928-0258', '031-317-4901', '051-921-1375', '02-2686-6890', '032-565-2481', '031-732-1137', '02-427-0217', '055-748-0185', '042-221-7050', '031-292-4862', '02-303-4566', '02-455-2224', '062-236-1121', '043-267-7578', '064-759-7739', '064-711-1128', '063-464-1234', '043-252-8184', '031-863-2270', '053-255-6841', '051-612-7976', '051-442-4142', '051-753-6005', '051-704-3535', '051-417-7852', '055-338-1263', '051-612-2231', '051-558-3210', '055-342-8781', '051-868-4140', '051-254-6383', '051-507-1230', '055-339-4406', '051-203-6767', '055-325-5226', '051-727-9900', '051-337-0217', '055-311-3940', '051-868-7937', '051-312-1588', '051-517-3331', '051-741-6777', '051-625-5617', '051-809-8337', '051-731-2234', '051-507-8434', '051-462-6200', '055-337-7735', '051-757-2232', '051-513-3331', '051-361-1015', '070-887-6604', '051-611-5617', '051-246-7789', '051-802-9404', '055-274-7375', '055-552-2861', '055-246-3555', '055-281-5353', '055-262-6985', '055-641-0760', '052-252-8000', '055-275-4756', '055-253-0202', '055-945-0020', '052-246-5078', '055-748-9994', '052-267-2121', '055-755-3477', '052-249-5008', '052-227-7700', '055-367-7888', '055-681-5952', '052-266-5007', '055-381-1100', '041-532-8220', '042-300-7707', '042-822-7006', '042-825-4080', '042-867-6841', '042-621-6213', '042-272-9085', '042-622-5979', '042-863-7001', '041-555-0071', '042-824-1003', '041-558-0017', '042-528-4312', '042-486-1363', '042-488-6013', '042-822-4042', '041-881-1124', '041-548-8484', '042-525-2991', '042-489-1117', '044-865-5899', '041-544-2700', '041-555-2992', '041-572-4466', '042-543-0303', '042-935-5600', '041-587-2345', '042-488-5200', '042-822-5154', '041-569-0003', '032-611-0420', '02-2682-2111', '032-876-4908', '02-899-6747', '02-2611-8006', '031-994-8929', '031-987-3824', '031-433-0036', '032-564-0837', '02-381-9257', '070-8835-3277', '031-915-1995', '032-466-5882', '031-924-7738', '031-433-1301', '031-902-5250', '031-936-7497', '031-981-0802', '032-876-4909', '032-746-4538', '031-913-7977', '032-321-3277', '032-547-5550', '032-432-7999', '031-915-7649', '032-521-6789', '032-551-0886', '032-507-7883', '032-815-7707', '031-906-3226', '032-310-9545', '032-561-3380', '032-435-5955', '032-834-3227', '031-966-9668', '032-611-1301', '032-831-2530', '031-975-2533', '032-522-6789', '032-323-1706', '032-323-0265', '031 9245684', '031-906-6754', '032-321-9757', '031-655-1386', '031-204-3434', '031-705-7022', '031-525-3336', '031-423-1230', '031-332-3070', '031-211-8886', '031-889-8089', '031-353-3070', '031-237-8828', '031-745-3030', '031-409-9007', '031-212-1877', '031-204-2224', '031-608-1409', '031-425-8511', '031-374-3745', '031-414-4210', '031-391-0776', '031-675-2716', '031-418-1900', '031-464-5210', '031-8003-8878', '031-651-2122', '031-414-4200', '031-8003-1138', '031-290-5448', '031-267-0533', '031-898-0831', '031-711-5352', '031-440-8490', '031-385-5027', '070-8800-8076', '070-8882-8212', '031-717-5695', '031-205-5508', '031-739-8300', '031-709-2220', '02-545-0806', '02-544-1014', '02-548-1014', '02-595-1718', '02-557-5004', '021-544-1852', '02-557-8805', '02-782-1518', '02-803-2346', '02-3663-6837', '02-3012-1259', '02-2637-3002', '02-2051-2008', '02-812-1014', '02-761-1003', '02-501-1554', '02-476-1131', '02-485-1077', '02-2652-2521', '02-553-5232', '02-512-1014', '02-2635-5255', '02-425-5582', '02-832-2522', '02-403-7344', '02-888-4455', '02-2644-5368', '02-2603-5368', '02 5710282', '02-581-0696', '02-546-2007', '02-459-7975', '02-812-3552', '02-260-3535', '02-896-6000', '02-815-6429', '02-887-6887', '02-850-2508', '02-557-4727', '02-567-0034', '02-355-4650', '02-2269-2100', '02-910-6895', '02-318-6202', '02-499-9292', '02-743-1350', '02-497-2800', '02-2296-9898', '02-499-2900', '02-455-5440', '02-747-4400', '02-2012-0406', '02-946-1596', '02-706-6227', '02-357-1479', '02-446-0423', '02-942-7779', '02-446-6444', '02-307-6196', '02-2231-7088', '029981641', '02-903-6363', '02-467-4556', '02-918-7432', '02-461-7900', '02-713-7775', '02-432-9888', '02-336-0522', '02-3673-0100', '02-437-7300', '02-790-2286', '02-323-6934', '02-2275-9890', '02-3789-6467', '02-352-1500', '02-736-6535', '02-988-1641', '02-795-2223', '02-322-9431', '02-776-4518', '02-730-8777', '02-303-1133', '02-766-7537', '02-923-4010', '02-384-9890', '02-744-4949', '02-936-0501', '02-723-7222', '02-364-8870', '02-764-5656', '02-725-5926', '02-333-0388', '02-706-5007', '02-3157-3167', '02-533-9464', '02-957-1589', '02-977-0045', '02-312-8725', '02-737-0501', '02-393-8609', '02-465-3285', '02-338-9933', '02-777-9200', '02-432-4375', '02-735-9000', '02-2272-9977', '02-777-8552', '02-713-2055', '02-922-8413', '02-715-0080', '02-702-2454', '02-3147-1248', '070-4137-7702', '02-324-6688', '02-737-0034', '02-2299-3555', '02-741-0677', '00', '00', '00', '00', '00', '00', '00', '00', '00', '00', '00']
</code>```

edit: if you want use relative paths, you will supposed to change for loops to fetch 8 s from one page.

Body:
So I have been looping through the list of address,name,phone and been successful at extracting each row from the list.

However, from each row, I want to extract address, name, and phone using relative XPATH but I have been failing. How do I use the relative path to extract what I want? The relative path is used from each row's point of view. Below is my code.

import time
import requests
import csv
import re
from selenium.webdriver.common.by   import By
from selenium.webdriver             import ActionChains
from bs4        import BeautifulSoup
from selenium   import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(5)
url1 = 'http://subway.co.kr/storeSearch?page='
url2 = '&rgn1Nm=&rgn2Nm=#storeList'

addresses = []
names = []
phones = []

for i in range(1, 42):
    driver.get(url1 + str(i) + url2)
    lst = driver.find_elements_by_xpath('/html/body/div/div[2]/div[2]/div[3]/div/div/div[1]/table/tbody/tr')
    for row in lst:
####### THIS IS WHERE IT NEEDS AN ANSWER ################################################
        address = row.find_element(By.XPATH, ".//td[2]/div/a")
        addresses.append(address.text)
        name = row.find_element(By.XPATH, ".//td[1]/a")
        names.append(name.text)
        phones.append(row.find_element_by_xpath("//div[@class='tel']").text)
######################################################################################
stores = [{
    'address'   : props[0],
    'name'      : props[1],
    'phone'     : props[2]
} for props in zip(addresses, names, phones)]

with open('stores.csv', 'w') as csvfile:
    csvout = csv.DictWriter(csvfile, ['address', 'name', 'phone'])
    csvout.writeheader()
    csvout.writerows(stores)

Body:
ok.check html of that site. and those relative XPATHs not work because you have something like that:

<body>
    <tr>....</tr>
    <tr>....</tr>
    <tr>....</tr>
    <tr>....</tr>
    <tr>....</tr>
    <tr>....</tr>
    <tr>....</tr>
    <tr>....</tr>
    ...
</body>

so there are 8  with company data on each page. and each company has a such realtive path for adress:

..//tr[1]/td[2]/div/a # first company
..//tr[2]/td[2]/div/a # second

up to 8 on one page. So it's quite hard to make realtive path to lst. but think you have got all needed data in the lst. i change your code in that way:

 for i in range(1, 42):
        driver.get(url1 + str(i) + url2)
        # change here. you have got
        lst = driver.find_elements_by_xpath('/html/body/div/div[2]/div[2]/div[3]/div/div/div[1]/table/tbody/tr')

        for row in lst:
            r = row.text.split('\n')
            addresses.append(r[2])
            names.append(r[1])
            phones.append(r[4])

don't now if column are right because it's written in korean, but outputs are:

addresses:

['경기 성남시 분당구 백현로101번길 21', '경남 김해시 김해대로 2232 이마트 1층', '경기 시흥시 은계번영길 21', '부산광역시 동구 중앙대로206', '서울시 송파구 송파대로 438 106호, 107호', '경기 화성시 남양읍 시청로 6', '전라북도 전주시 완산구 홍산중앙로 22', '광주 남구 서문대로 749', '광주 광산구 우산동 1588-1', '광주 광역시 북구 북문대로117', '경남 거제시 고현동 35-8 104호,105호', '경상북도 경산시 대동 166-6', '전라남도 무안군 삼향읍 남악3로 79', '대구광역시 중구 달구벌대로 2076', '대구광역시 남구 중앙대로 243', '경기도 성남시 수정구 위례광장로 104', '경기도 수원시 팔달구 아주로 49-1', '부산시 사상구 사상로211', '충청남도 당진시 읍내동 225-1 금화빌딩 1층 101호', '서울특별시 도봉구 도봉로 468, 1층 102호, 102-1호', '서울 서대문구 거북골로 23', '서울 강북구 삼양로 162', '전남 목포 백년대로 342', '대구 동구 검사동 957-21', '경남 진주시 충의로 20-4 101-102호', '대구 서구 달구벌대로 1689', '서울시 관악구 남부순환로 1904', '부산광역시 연제구 종합운동장로 7 부산홈플러스아시아드점 지하2층', '천안 동남구 청당동 512번지', '서울시 강남구 봉은사로 627', '대구 북구 침산남로 157', '대구 수성구 달구벌대로 3201', '서울시 송파구 석촌호수로 298', '광주 광역시 광산구 장신로 133 1층', '경기도 김포시 돌문로 43', '경기도 수원시 영통구 광교중앙로 145', '서울특별시 종로구 대학로10길 11', '대구광역시 수성구 달구벌대로 2513', '부산 해운대구 해운대로 794 엘리움 빌딩 104호', '대구광역시 수성구 지범로 180 1F', '경기도 용인시 수지구 성복2로 38', '대구광역시 달서구 조암로 9', '대구광역시 달성군 현풍읍 테크노상업로 62', '서울시 영등포구 시흥대로 681, 삼성YJ그랜드빌딩 신관동 1층', '부산광역시 부산진구 엄광로 176', '부산광역시 강서구 명지국제8로 264', '서울시 성동구 왕십리로 328', '서울 강남구 논현로 84', '부산광역시 남구 분포로 145 스퀘어동 1055호,1056호', '서울특별시 성북구 화랑로13길 10 (하월곡동)', '울산광역시 문수로 332', '서울시 영등포구 당산동6가 337-23', '광주광역시 서구 치평로 86', '서울시 송파구 송파대로 374', '충청남도 서산시 호수공원 12로 26', '대구광역시 달서구 두류공원로 200', '경기도 용인시 기흥구 동백중앙로 283 골드프라자 A동 105호, 106호', '광주 광산구 첨단중앙로 110 1층', '경기도 성남시 수정구 수정로 179 (신흥동)', '제주도 제주시 아라2동 34-13', '서울 영등포구 양평동4가 101-10', '대구광역시 북구 학정로 422, 1층', '광주광역시 북구 우치로 124, 1층', '부산광역시 해운대구 선수촌로 78', '대구광역시 달서구 월배로 222', '경기도 평택시 비전5로 15', '서울시 송파구 올림픽로 293-19', '대구시 달서구 계대동문로 9', '대구시 중구 동성로 6길 42', '인천광역시 남동구 구월동 1140-4', '수원시 장안구 경수대로 927', '경기도 수원시 영통구 봉영로 1576', '서울특별시 종로구 교북동 35-10', '서울시 강서구 등촌동 717 그레이스힐', '서울시 강서구 마곡동 776-4외 1필지 엠코지니어스타 제에이동 109,110호', '부산광역시 부산진구 동천로 71', '경기도 화성시 동탄지성로 117', '경기도 수원시 영통구 효원로 383', '서울시 중구 새문안로 30', '경기도 오산시 내삼미로 89', '경기도 성남시 분당구 운중로 142 판교메디컬타워 1층', '경기도 김포시 풍무1로 65-1 풍무시티프라자', '서울특별시 영등포구 국제금융로 6길 38', '대구광역시 북구 대학로 87', '서울특별시 강남구 봉은사로 328', '부산광역시 해운대구 센텀1로 17 센텀프리미어호텔 108호', '서울특별시 중구 다산로 153', '서울특별시 종로구 종로 263-1', '서울특별시 동대문구 답십리로 293', '충청남도 천안시 서북구 충무로 201', '경기도 용인시 기흥구 구갈로 71-18 기흥더샵프라임뷰', '경기도 수원시 영통구 대학로 34', '서울특별시 광진구 능동로 290 삼일빌딩', '서울특별시 동대문구 왕산로 15-1', '경기도 시흥시 비둘기공원로 21 대야하이빌', '부산광역시 동구 조방로 14 동일타워 124호', '서울특별시 구로구 경인로 445 동양미래대 8호관', '인천광역시 서구 탁옥로 50', '경기도 성남시 중원구 산성대로372번길 10', '서울특별시 강동구 동남로 75길 13-10', '경상남도 진주시 새평거로 136', '대전광역시 중구 대종로 488번길 25', '경기도 수원시 권선구 금곡로 204', '서울특별시 마포구 월드컵북로54길 25 상암DMC 푸르지오시티 103호', '서울특별시 광진구 아차산로 480', '광주광역시 동구 중앙로 160번길 31-18', '충청북도 청주시 서원구 1순환로 676', '제주특별자치도 제주시 중앙로 252', '제주특별자치도 제주시 국기로 1길 2', '전라북도 군산시 공단대로 374', '충청북도 청주시 청원구 대성로 301', '경기도 동두천시 평화로 2552-1', '대구광역시 중구 국채보상로 598', '부산광역시 남구 수영로 246', '부산광역시 동구 중앙대로 365', '부산광역시 연제구 과정로 237번길 119', '부산광역시 금정구 중앙대로 1719번길 30', '부산광역시 영도구 태종로 107', '경상남도 김해시 능동로 149번길 8', '부산광역시 수영구 수영로 462', '부산광역시 동래구 명륜로 187번길 49', '경상남도 김해시 진영읍 김해대로361번길 16', '부산광역시 연제구 중앙대로 1043', '부산광역시 서구 구덕로 226번길 3', '부산광역시 연제구 법원로 32번길 18', '경상남도 김해시 가야로 163', '부산광역시 강서구 명지오션시티4로 61', '경상남도 김해시 인제로 184 1층', '부산광역시 기장군 정관읍 정관로 565', '부산광역시 북구 덕천1길 22', '경상남도 김해시 율하3로 42', '부산광역시 부산진구 양지로 4', '부산광역시 사상구 가야대로 366번길 43', '부산광역시 금정구 금정로 60번길 40', '부산광역시 해운대구 센텀5로 55', '부산광역시 남구 수영로 325번길 12', '부산광역시 부산진구 가야대로 784번길 23', '부산광역시 해운대구 구남로 42-1', '부산광역시 동래구 사직북로 7', '부산광역시 중구 중앙대로 102', '경상남도 김해시 내외중앙로 74', '부산광역시 수영구 광안해변로 239', '부산광역시 금정구 부산대학로 48', '부산광역시 북구 화명신도시로 130', '부산광역시 사하구 낙동대로 542', '부산광역시 남구 용소로 24', '부산광역시 중구 광복중앙로 3-1', '부산광역시 부산진구 중앙대로 690', '경상남도 창원시 성산구 가양로 124번길 5-5 103호', '경상남도 창원시 진해구 냉천로 62', '경상남도 창원시 마산합포구 3.15대로 1', '경상남도 창원시 의창구 용지로 169번길 3', '경상남도 창원시 성산구 중앙대로100번길 9 리베라컨벤션 1층 107호', '경상남도 통영시 통영해안로 317-1', '울산광역시 동구 방어진순환도로 662', '경상남도 창원시 성산구 단정로 25', '경상남도 창원시 마산회원구 합성옛길 137', '경상남도 거창군 거창읍 중앙로 120', '울산광역시 중구 시계탑거리 17', '경상남도 진주시 진양호로 525', '울산광역시 남구 삼산로 11', '경상남도 진주시 진주대로 548', '울산광역시 남구 대학로 108', '울산광역시 남구 삼산로 267번길 6-15', '경상남도 양산시 물금읍 범어로 60', '경상남도 거제시 아주1로2길 62', '울산광역시 남구 신정로 37', '경상남도 양산시 양산역2길 3', '충청남도 아산시 배방읍 모산로 123', '대전광역시 중구 태평로 71', '대전광역시 유성구 계룡로 42-1', '대전광역시 서구 도안북로 93번길 31', '대전광역시 유성구 유성대로 1732', '대전광역시 대덕구 한남로 25번길 5', '대전광역시 동구 동구청로 95', '대전광역시 동구 동대전광역시로 168', '대전광역시 유성구 대학로 291 정문술빌딩 1층', '충청남도 천안시 동남구 대흥로 228 삼영빌딩 104호', '대전광역시 유성구 한밭대로 414', '충청남도 천안시 서북구 불당25로 138', '대전광역시 중구 계백로 1715 102호', '대전광역시 서구 월평북로 95', '대전광역시 서구 문정로 88', '대전광역시 유성구 노은로 150', '충청남도 공주시 흑수골길 35', '충청남도 아산시 번영로224번길 4', '대전광역시 서구 계룡로 626', '대전광역시 서구 둔산로 130 1층 111호', '세종특별자치시 절재로 194', '충청남도 아산시 온궁로 24-2', '충청남도 천안시 서북구 두정로 165', '충청남도 천안시 서북구 월봉로 79', '대전광역시 서구 관저로 142', '대전광역시유성구 관들1길 49', '충청남도 천안시 서북구 서부2길 78', '대전광역시 서구 둔산로 18', '대전광역시 유성구 궁동로18번길 10', '충청남도 천안시 동남구 만남로 22', '경기도 부천시 신흥로 170', '경기도 광명시 광명로 892-1', '경기도 부천시 부일로 725', '경기도 광명시 금하로 464', '경기도 광명시 철산로 15', '경기도 고양시 덕양구 충장로 11', '경기도 김포시 김포한강4로 118', '경기도 시흥시 중심상가로 195', '인천광역시 서구 서곶로 837', '경기도 고양시 덕양구 권율대로 901', '인천광역시 미추홀구 인하로 100', '경기도 고양시 일산서구 중앙로 1581', '인천광역시 남동구 호구포로 818 퍼스트하임프라자 1층', '경기도 고양시 일산서구 일산로 539', '경기도 시흥시 배곧3로 96', '경기도 고양시 일산동구 일산로 233', '경기도 고양시 일산동구 중앙로 1036 1층', '경기도 김포시 김포한강2로23번길 72 2층 213호', '인천광역시 미추홀구 주안로 89', '인천광역시 중구 신도시남로142번길 6', '경기도 고양시 일산서구 일현로 97-11', '경기도 부천시 석천로169번길 22', '인천광역시 계양구 경명대로 1055', '인천광역시 남동구 구월동 1454-1(예술로 140번길 33) 화성빌딩 102호', '경기도 고양시 일산서구 중앙로 1415', '인천광역시 부평구 부평문화로 63', '인천광역시 계양구 계산새로 85', '인천광역시 부평구 체육관로 24', '인천광역시 연수구 먼우금로 194 메카오피스텔', '경기도 고양시 일산동구 장항동 890-5 굿모닝 법조타운 제 1층 101호 (중앙로 1191)', '인천광역시 연수구 송도과학로16번길 33-3 송도 트리플스트리트', '인천광역시 서구 청라라임로 65 라임타워', '인천광역시 남동구 청능대로 583 중앙프라자', '인천광역시 연수구 센트럴로 194 더샵센트럴파크2 A동 108호', '경기도 고양시 덕양구 화정로 69 한화꿈에그린아파트', '경기도 부천시 부일로 448 프리존빌딩', '인천광역시 연수구 신송로 122', '경기도 고양시 일산서구 일산동 1681-1 엑셀런트 빌딩 103호 (일중로 46)', '인천광역시 부평구 부흥로 264', '경기도 부천시 상동로 87 가나베스트타운 103호', '경기도 부천시 부일로 202-13', '경기도 고양시 일산서구 호수로 817', '경기도 고양시 일산동구 정발산로 38 장항동이스턴시티', '경기도 부천시 길주로 288', '경기도 평택시 중앙2로 16', '경기도 수원시 영통구 덕영대로 1707', '경기도 성남시 분당구 성남대로925번길 16', '경기도 용인시 수지구 신수로 767 분당수지유타워 제B동 111호', '경기도 안양시 동안구 관악대로 486', '경기도 용인시 처인구 명지로 17', '경기도 수원시 영통구 센트럴타운로 107', '경기도 용인시 기흥구 죽전로 20 죽전누리에뜰아파트 상가 B동 121호', '경기도 화성시 향남읍 향남로 392 우성메디피아 1층 103호, 104호', '경기도 화성시 효행로 1063', '경기도 성남시 중원구 성남대로997번길 51-20', '경기도 안산시 상록구 한양대학로 60', '경기도 용인시 수지구 광교중앙로 305', '경기도 수원시 영통구 봉영로 1623', '경기도 성남시 분당구 판교로227번길 6', '경기도 안양시 동안구 시민대로327번길 6 112호', '경기도 화성시 동탄대로 181 A동', '경기도 안산시 단원구 예술대학로 17', '경기도 군포시 광정로 60', '경기도 안성시 중앙로 401', '경기도 안산시 상록구 광덕1로 385', '경기도 안양시 만안구 만안로223번길 7', '경기도 화성시 동탄반석로 156 동탄하이페리온', '경기도 평택시 평남로 941', '경기도 안산시 단원구 광덕대로 151', '경기도 화성시 동탄솔빛로 48', '경기도 수원시 장안구 서부로 2066 성균관대학교 학생회관 2층', '경기도 수원시 팔달구 권광로 204', '경기도 용인시 수지구 수지로296번길 47 수석빌딩', '경기도 성남시 분당구 성남대로 43번길 10', '경기도 안양시 동안구 시민대로 167 안양벤처텔', '경기도 안양시 동안구 평촌대로 119 원평비젼프라자', '경기도 성남시 분당구 성남대로916번길 20 노블리치1오피스텔', '경기도 성남시 분당구 성남대로 331번길 13', '경기도 성남시 분당구 돌마로 52', '경기도 수원시 영통구 영통로 195 골든스퀘어', '경기도 성남시 분당구 대왕판교로 670', '경기도 성남시 분당구 서현로 184 엘지분당에클라트', '서울특별시 강남구 선릉로 653', '서울특별시 서초구 강남대로 499', '서울특별시 강남구 압구정로 28길 13', '서울특별시 서초구 법원로1길 1', '서울특별시 강남구 테헤란로 337', '서울특별시 금천구 가산디지털1로 165 가산비지니스센터 102호', '서울특별시 강남구 봉은사로 206 대명빌딩', '서울특별시 영등포구 국회대로62길 25 교육시설재난공제회관', '서울특별시 금천구 시흥대로 399 1층 112호', '서울특별시 강서구 마곡중앙6로 93', '서울특별시 송파구 법원로 114 현대엠스테이트 C동 119호', '서울특별시 영등포구 선유로 70', '서울특별시 강남구 삼성로 520', '서울특별시 동작구 노량진로 166', '서울특별시 영등포구 국회대로 70길 19', '서울특별시 강남구 테헤란로 25길 20', '서울특별시 강동구 성안로 147', '서울특별시 강동구 올림픽로 664', '서울특별시 양천구 목동서로 349 센트럴프라자', '서울특별시 강남구 강남대로66길 6', '서울특별시 서초구 강남대로 535 프린스빌딩', '서울특별시 영등포구 영중로 25', '서울특별시 송파구 올림픽로 130', '서울특별시 동작구 보라매로3길 29 해태보라매타워', '서울특별시 송파구 충민로 5 송파한화오벨리스크', '서울특별시 관악구 신림로 344 SK허브그린', '서울특별시 양천구 오목로 315', '서울특별시 양천구 오목로 238 론드사옥', '서울특별시 강남구 남부순환로 2611', '서울특별시 서초구 서초중앙로22길 47 문화빌딩', '서울특별시 강남구 도산대로 124 대영빌딩', '서울특별시 강남구 일원로3길 4', '서울특별시 동작구 사당로 12-1', '서울특별시 강서구 강서로 159-1', '서울시 서초구 효령로 111, 1층', '서울특별시 동작구 흑석로 79', '서울특별시 관악구 관악로 156', '서울특별시 구로구 디지털로34길 55 코오롱싸이언스밸리 2차 109호', '서울특별시 강남구 강남대로96길 12', '서울특별시 강남구 삼성로 151 선경아파트5동 5', '서울특별시 은평구 서오릉로 150', '서울특별시 중구 장충단로 227-2,1~2F', '서울특별시 성북구 정릉로 77', '서울 중구 명동길 74 명동성당 118호', '서울특별시 광진구 아차산로 241 연한빌딩 102호', '서울특별시 종로구 종로 347', '서울특별시 성동구 아차산로 113', '서울특별시 성동구 왕십리로 410 센트라스', '서울특별시 성동구 왕십리로 108-1', '서울특별시 광진구 천호대로 666', '서울시 종로구 계동길 5', '서울특별시 용산구 한강대로23길 55 아이파크몰 서관 4층', '서울특별시 강북구 도봉로 209', '서울특별시 용산구 청파로 74 전자랜드 본관 A동 104호', '서울특별시 은평구 은평로 108 101호', '서울특별시 광진구 강변역로4길 10', '서울특별시 노원구 광운로 57', '서울특별시 광진구 자양로 113 구의 현대 하이엘 103-4호', '서울특별시 마포구 월드컵로 34길 7', '서울특별시 중구 퇴계로 388', '서울특별시 강북구 오패산로 417', '서울특별시 도봉구 마들로11길 61', '서울특별시 광진구 뚝섬로34길 67 광진트라팰리스 101호, 102호', '서울특별시 성북구 길음로 7길 6', '서울특별시 광진구 동일로20길 106', '서울특별시 마포구 마포대로 109 롯데캐슬프레지던트', '서울특별시 중랑구 용마산로115길 127 한일써너스빌리젠시1단지', '서울특별시 마포구 와우산로 117 102호', '서울특별시 종로구 성균관로 41', '서울특별시 중랑구 망우로 203', '서울특별시 용산구 대사관로 63', '서울특별시 마포구 와우산로 44 1층', '서울특별시 중구 을지로 103-1', '서울특별시 중구 소공로 35 남산롯데캐슬아이리스', '서울특별시 은평구 연서로 215-1', '서울특별시 서대문구 통일로 432-1, 1층', '서울특별시 강북구 도봉로 41-1', '서울특별시 용산구 한강대로30길 25 아스테리움 용산', '서울특별시 서대문구 연세로 23', '서울특별시 중구 칠패로 27 순화동 the# 주상복합', '서울특별시 중구 남대문로 112', '서울특별시 서대문구 북가좌동 수색로 100', '서울특별시 종로구 종로 213-1', '서울특별시 성북구 보문로 34길 78', '서울특별시 마포구 양화로 45 메세나폴리스', '서울특별시 성북구 동소문로 10', '서울특별시 노원구 노해로 502', '서울특별시 종로구 새문안로 3길 19', '서울특별시 서대문구 이화여대7길 30', '서울특별시 종로구 동숭길 101 현대엘리베이터', '서울특별시 종로구 사직로 115', '서울특별시 서대문구 연희로 93 연희오피스텔', '서울특별시 용산구 한강대로 271', '서울특별시 은평구 진관2로 29-21 드림스퀘어', '서울특별시 마포구 월드컵북로 361 DMC 이안상암2단지', '서울특별시 동대문구 경희대로4길 6', '서울특별시 노원구 공릉로 207', '서울특별시 서대문구 연세로 50-1 연세공학원', '서울특별시 종로구 삼일대로 391', '서울특별시 서대문구 충정로 23 풍산빌딩 지하 2층', '서울특별시 광진구 광나루로 390', '서울특별시 마포구 월드컵로 87 마포로얄프라자', '서울특별시 중구 세종대로 68 천일빌딩', '서울특별시 중랑구 망우로 312', '서울특별시 종로구 우정국로 69 동일빌딩', '서울특별시 중구 퇴계로 204', '서울특별시 용산구 후암로 107 게이트웨이타워', '서울특별시 마포구 백범로 11', '서울특별시 성북구 안암동 5가 인촌로 88', '서울특별시 마포구 마포대로 53 마포트라팰리스', '서울특별시 용산구 청파로47길 42', '서울특별시 서대문구 신촌로 121 아남오피스텔', '서울특별시 동대문구 휘경로 14', '서울특별시 마포구 홍익로 10', '서울특별시 종로구 종로 77 통일빌딩', '서울특별시 성동구 마조로 11, 1층', '서울특별시 종로구 창경궁로 234 동화빌딩', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-']

names:

['수내', '김해이마트', '시흥은계', '부산역', '석촌역', '화성남양', '전주전북도청', '광주주월', '광주하남', '광주운암', '거제고현', '경산영남대', '목포남악', '대구반월당', '대구교대', '성남위례', '수원아주대', '부산사상', '당진읍내', '쌍문역', '명지대', '삼양솔샘', '목포상동', '대구동촌DT', '진주혁신', '대구광장', '낙성대역', '부산홈플러스아시아드', '천안청수', '봉은사역', '대구침산', '대구시지', '석촌호수', '광주수완', '김포사우', '광교엘포트', '대학로마로니에', '대구수성구청역', '부산좌동', '대구지산', '수지롯데몰', '대구월성', '대구테크노폴리스', '대림삼거리', '부산동의대', '부산명지국제신도시', '왕십리', '포이사거리', '부산 W스퀘어', '동덕여대', '울산옥동', '당산역', '광주상무', '송파역', '서산호수공원', '대구이월드', '용인동백', '광주첨단', '성남태평', '제주대점', '선유도역점', '대구칠곡3지구', '광주전남대후문', '부산반여점', '대구상인역', '평택비전', '잠실역', '대구계대동문', '대구동성로2호', '인천길병원', '수원장안구청', '수원홈플러스영통', '독립문', '가양역', '양천향교역', '부산서면동천로', '동탄센트럴파크', '수원영통구청', '정동', '오산대역', '서판교', '김포풍무역', '여의도화재보험', '경북대북문', '선정릉역', '부산벡스코', '약수역', '동대문역', '장안사거리', '천안충무로', '용인기흥구청', '광교경기대후문', '군자역', '신설동역', '시흥대야', '부산범일', '동양미래대', '인천서구청', '성남단대오거리역', '고덕역', '진주평거탑마트', '대전은행', '수원호매실', '상암DMC푸르지오시티', '광장', '광주충장로', '청주충북대', '제주시청', '제주연동신시가지', '군산나운', '청주대', '동두천', '대구동성로', '부산대연', '부산진역', '부산토곡', '부산장전역', '부산영도', '김해장유', '부산남천', '부산명륜', '김해진영', '부산시청', '부산부민', '부산법원', '김해삼계', '부산명지', '김해인제대', '부산정관', '부산덕천', '김해율하', '부산양정', '부산주례', '부산대역', '부산센텀', '부산경성대', '부산서면롯데', '부산해운대비치', '부산사직', '부산중앙', '김해내동', '부산광안비치', '부산대', '부산화명', '부산동아대', '부산부경대', '부산광복', '부산서면', '창원대방', '진해석동', '마산경남대', '창원용지호수', '창원리베라', '통영문화마당', '울산일산', '창원상남', '마산합성', '경남거창', '울산성남', '진주중안', '울산공업탑', '진주경상대', '울산무거', '울산삼산', '경남남양산', '거제아주', '울산달동', '경남양산', '아산배방', '대전태평', '대전유성터미널', '대전목원대', '대전전민', '대전한남대', '대전가오', '대전우송대', '대전카이스트', '천안역', '대전충남대정문', '천안신불당', '대전오류', '대전월평선사', '대전탄방', '대전노은', '공주신관', '아산터미널', '대전용문', '대전시청', '세종정부청사', '아산온양', '천안두정', '천안쌍용', '대전관저', '대전관평', '천안성정', '대전둔산', '대전궁동', '천안신부', '부천위브더스테이트', '광명사거리역', '부천역곡역', '광명소하', '광명철산역', '일산행신', '김포장기동', '시흥정왕', '인천완정역', '일산고양삼송', '인천인하대', '일산대화역', '인천모래내시장역', '일산후곡', '시흥배곧신도시', '일산백마학원가', '일산고양터미널', '김포라베니체마치에비뉴', '인천주안역', '인천운서메가스타', '일산탄현', '부천시청', '인천계산역', '인천구월동로데오', '일산주엽역', '인천부평중앙', '인천계양구청', '인천삼산', '인천연수', '일산마두역', '인천송도트리플스트리트', '인천청라', '인천논현', '인천송도센트럴파크', '일산화정', '부천역', '인천송도', '일산산들', '인천부평시장역', '부천상동', '부천송내역', '일산레이킨스몰', '일산동구청', '부천중동', '평택로데오', '수원경희대', '성남터미널', '용인동천', '안양인덕원역', '용인처인', '광교중앙', '용인죽전', '화성향남', '화성병점', '성남시청', '안산한양대', '광교상현역', '수원영통', '판교브릿지타워', '안양평촌스마트스퀘어', '동탄호수공원', '안산중앙', '산본로데오', '안성중앙', '안산한대역', '안양1번가', '동탄하이페리온', '평택소사벌', '안산고잔', '동탄나루', '수원성균관대', '수원인계', '용인수지', '분당오리역', '안양범계', '안양평촌학원가', '분당야탑', '분당정자', '분당미금역', '수원망포역', '판교테크노밸리', '분당서현', '강남구청역', '신논현역', '압구정역', '서초법원', '선릉', '가산디지털단지', '언주역', '여의도KBS 본관', '독산', '발산역', '문정역', '문래', '삼성', '노량진', '여의도국회의사당', '역삼', '강동성심병원', '천호', '양천구청', '강남우성', '논현역', '영등포', '잠실새내역', '보라매', '문정법조', '신림역', '오목교', '목동역', '양재', '교대', '신사역', '대청', '숭실대', '화곡역', '방배점', '중앙대(서울)', '서울대', '구로디지털', '강남역', '대치도곡', '구산역', '동대문역사문화공원역', '국민대학교', '명동성당', '건대입구', '동묘앞역', '성수역', '상왕십리', '서울숲', '아차산역', '북촌', '용산아이파크몰', '미아역', '용산전자랜드', '응암', '강변역', '광운대역', '구의', '마포구청', '신당역', '수유역', '창동역', '뚝섬유원지역', '길음뉴타운', '건대로데오', '공덕역롯데캐슬', '망우', '홍대아트', '성균관대', '중랑역', '한남', '상수역', '을지로3가', '회현', '연신내', '홍제역', '미아사거리역', '용산아스테리움', '신촌로데오', '순화동라마다', '을지로입구', '가재울', '종로5가', '성신여대', '합정역메세나폴리스', '한성대', '노원', '광화문', '이대', '대학로', '경복궁', '연희', '남영역', '구파발역', '상암', '경희대', '공릉', '연세대', '종로삼일대로', '충정로', '세종대', '망원역', '시청', '상봉역', '안국', '충무로역', '서울역동자', '서강대', '고려대', '마포', '숙명여대', '신촌', '외대', '홍대', '종로', '한양대', '성대', '군산 KE (미군부대 매장)', '대구 FC (미군부대 매장)', '왜관 FC (미군부대 매장)', '평택 ZMM (미군부대 매장)', '평택 HMM (미군부대 매장)', '평택 USFKHQ (미군부대 매장)', '평택 TMM (미군부대 매장)', '평택 FC (미군부대 매장)', '오산 FC (미군부대 매장)', '성남 K-16 FC (미군부대 매장)', '용산 DHL (미군부대 매장)']

phones:

['Coming Soon', 'Coming Soon', 'Coming Soon', '070-4090-3721', 'Coming Soon', '031-357-4637', '063-903-1191', '062-456-1181', '062-446-0072', '062-462-1125', '055-634-0979', '053-818-7771', '061-980-3310', '070-4122-0077', '053-622-6348', '031-602-6126', '031-211-0369', '051-900-5226', '041-356-2731', '02-999-5906', '02-374-7300', '02-6952-3399', '061-980-1191', '070-8851-0101', '055-758-0250', '053-573-3030', '02-877-6687', '051-506-0122', '041-414-1421', '02-545-5729', '070-4138-0154', '070-4146-5154', '02-424-0020', '062-419-1131', '070-4234-3277', '031-217-5570', '02-762-5626', '053-744-3688', '051-731-7717', '053-782-5761', '031-5174-2654', '053-643-8400', '070-8844-1379', '02-847-8255', '051-895-0407', '051-292-2588', '02-2295-1800', '02-577-5227', '051-626-3300', '02-6404-2212', '052-271-6600', '02-2636-1014', '062-446-1131', '02-420-2160', '041-663-7852', '070-414-7000', '031-285-4857', '062-413-1121', '031-755-6785', '064-752-7739', '02-2632-1232', '070-4246-5154', '062-452-1121', '051-783-6384', '053-643-0013', '031-652-6777', '02-2202-1300', '053-593-5050', '053-253-7801', '070-8888-3277', '031-244-8490', '031-202-3633', '02-730-8255', '02-2668-6777', '02-3662-6697', '051-817-1232', '031-8003-8825', '031-217-7772', '02-737-0808', '031-378-8004', '031-707-7911', '031-984-0606', '02-6951-1118', '053-951-7802', '02-555-9389', '051-741-6778', '02-2256-9891', '02-747-9809', '02-3390-4970', '041-579-4321', '031-284-3161', '070-7750-2040', '02-456-6444', '02-928-0258', '031-317-4901', '051-921-1375', '02-2686-6890', '032-565-2481', '031-732-1137', '02-427-0217', '055-748-0185', '042-221-7050', '031-292-4862', '02-303-4566', '02-455-2224', '062-236-1121', '043-267-7578', '064-759-7739', '064-711-1128', '063-464-1234', '043-252-8184', '031-863-2270', '053-255-6841', '051-612-7976', '051-442-4142', '051-753-6005', '051-704-3535', '051-417-7852', '055-338-1263', '051-612-2231', '051-558-3210', '055-342-8781', '051-868-4140', '051-254-6383', '051-507-1230', '055-339-4406', '051-203-6767', '055-325-5226', '051-727-9900', '051-337-0217', '055-311-3940', '051-868-7937', '051-312-1588', '051-517-3331', '051-741-6777', '051-625-5617', '051-809-8337', '051-731-2234', '051-507-8434', '051-462-6200', '055-337-7735', '051-757-2232', '051-513-3331', '051-361-1015', '070-887-6604', '051-611-5617', '051-246-7789', '051-802-9404', '055-274-7375', '055-552-2861', '055-246-3555', '055-281-5353', '055-262-6985', '055-641-0760', '052-252-8000', '055-275-4756', '055-253-0202', '055-945-0020', '052-246-5078', '055-748-9994', '052-267-2121', '055-755-3477', '052-249-5008', '052-227-7700', '055-367-7888', '055-681-5952', '052-266-5007', '055-381-1100', '041-532-8220', '042-300-7707', '042-822-7006', '042-825-4080', '042-867-6841', '042-621-6213', '042-272-9085', '042-622-5979', '042-863-7001', '041-555-0071', '042-824-1003', '041-558-0017', '042-528-4312', '042-486-1363', '042-488-6013', '042-822-4042', '041-881-1124', '041-548-8484', '042-525-2991', '042-489-1117', '044-865-5899', '041-544-2700', '041-555-2992', '041-572-4466', '042-543-0303', '042-935-5600', '041-587-2345', '042-488-5200', '042-822-5154', '041-569-0003', '032-611-0420', '02-2682-2111', '032-876-4908', '02-899-6747', '02-2611-8006', '031-994-8929', '031-987-3824', '031-433-0036', '032-564-0837', '02-381-9257', '070-8835-3277', '031-915-1995', '032-466-5882', '031-924-7738', '031-433-1301', '031-902-5250', '031-936-7497', '031-981-0802', '032-876-4909', '032-746-4538', '031-913-7977', '032-321-3277', '032-547-5550', '032-432-7999', '031-915-7649', '032-521-6789', '032-551-0886', '032-507-7883', '032-815-7707', '031-906-3226', '032-310-9545', '032-561-3380', '032-435-5955', '032-834-3227', '031-966-9668', '032-611-1301', '032-831-2530', '031-975-2533', '032-522-6789', '032-323-1706', '032-323-0265', '031 9245684', '031-906-6754', '032-321-9757', '031-655-1386', '031-204-3434', '031-705-7022', '031-525-3336', '031-423-1230', '031-332-3070', '031-211-8886', '031-889-8089', '031-353-3070', '031-237-8828', '031-745-3030', '031-409-9007', '031-212-1877', '031-204-2224', '031-608-1409', '031-425-8511', '031-374-3745', '031-414-4210', '031-391-0776', '031-675-2716', '031-418-1900', '031-464-5210', '031-8003-8878', '031-651-2122', '031-414-4200', '031-8003-1138', '031-290-5448', '031-267-0533', '031-898-0831', '031-711-5352', '031-440-8490', '031-385-5027', '070-8800-8076', '070-8882-8212', '031-717-5695', '031-205-5508', '031-739-8300', '031-709-2220', '02-545-0806', '02-544-1014', '02-548-1014', '02-595-1718', '02-557-5004', '021-544-1852', '02-557-8805', '02-782-1518', '02-803-2346', '02-3663-6837', '02-3012-1259', '02-2637-3002', '02-2051-2008', '02-812-1014', '02-761-1003', '02-501-1554', '02-476-1131', '02-485-1077', '02-2652-2521', '02-553-5232', '02-512-1014', '02-2635-5255', '02-425-5582', '02-832-2522', '02-403-7344', '02-888-4455', '02-2644-5368', '02-2603-5368', '02 5710282', '02-581-0696', '02-546-2007', '02-459-7975', '02-812-3552', '02-260-3535', '02-896-6000', '02-815-6429', '02-887-6887', '02-850-2508', '02-557-4727', '02-567-0034', '02-355-4650', '02-2269-2100', '02-910-6895', '02-318-6202', '02-499-9292', '02-743-1350', '02-497-2800', '02-2296-9898', '02-499-2900', '02-455-5440', '02-747-4400', '02-2012-0406', '02-946-1596', '02-706-6227', '02-357-1479', '02-446-0423', '02-942-7779', '02-446-6444', '02-307-6196', '02-2231-7088', '029981641', '02-903-6363', '02-467-4556', '02-918-7432', '02-461-7900', '02-713-7775', '02-432-9888', '02-336-0522', '02-3673-0100', '02-437-7300', '02-790-2286', '02-323-6934', '02-2275-9890', '02-3789-6467', '02-352-1500', '02-736-6535', '02-988-1641', '02-795-2223', '02-322-9431', '02-776-4518', '02-730-8777', '02-303-1133', '02-766-7537', '02-923-4010', '02-384-9890', '02-744-4949', '02-936-0501', '02-723-7222', '02-364-8870', '02-764-5656', '02-725-5926', '02-333-0388', '02-706-5007', '02-3157-3167', '02-533-9464', '02-957-1589', '02-977-0045', '02-312-8725', '02-737-0501', '02-393-8609', '02-465-3285', '02-338-9933', '02-777-9200', '02-432-4375', '02-735-9000', '02-2272-9977', '02-777-8552', '02-713-2055', '02-922-8413', '02-715-0080', '02-702-2454', '02-3147-1248', '070-4137-7702', '02-324-6688', '02-737-0034', '02-2299-3555', '02-741-0677', '00', '00', '00', '00', '00', '00', '00', '00', '00', '00', '00']

edit: if you want use relative paths, you will supposed to change for loops to fetch 8 s from one page.


问:
Modify a child control from trigger or better way to change their foreground?
I have a listbox with a template, inside the listboxitem I have 2 textblock.

My goal is to change the foreground of those 2 textblock when the listboxitem is:

Hovered(Mouse over)

Selected

My ItemTemplate currently removes the highlight when u hover over items, that works as expected.

I know I can get the IsSelected and IsMouseOver events, for example:

<Trigger Property="IsSelected" Value="true">
    <Setter Property="Background" TargetName="Bd" Value="White"/>

</Trigger>
<Trigger Property="IsMouseOver" Value="true">

</Trigger>
```

<p>But I could not figure out how to modify the TextBlock inside, I've tried using acestor and a whole different ways none worked(as in they had no effect).</p>

<p>Here is what my View looks like:</p>

```<UserControl x:Class="Shex.Views.SideBarView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:local="clr-namespace:Shex.Views"
             xmlns:s="https://github.com/canton7/Stylet"
             xmlns:shex="clr-namespace:Shex"
             mc:Ignorable="d"
             d:DesignHeight="800" d:DesignWidth="260"
             Background="#403f42" Padding="0" BorderThickness="0" Margin="0">
    <UserControl.Resources>

    </UserControl.Resources>
    <Grid Margin="0">
        <ListBox ItemsSource="{Binding MenuItems}" SelectionMode="Single" SelectedItem="{Binding SelectedMenuItem}" SelectionChanged="{s:Action ChangeView}"
                 BorderThickness="0" Padding="0" Margin="0 10 0 0" Background="#403f42" ItemContainerStyle="{DynamicResource MenuContainerStyle}" SnapsToDevicePixels="true">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Height="60" Orientation="Horizontal" SnapsToDevicePixels="true">
                        <TextBlock Text="{Binding Image}" FontFamily="/Shex;component/Fonts/Font Awesome 5 Free-Solid-900.otf#Font Awesome 5 Free Solid" Foreground="#cfced1" FontSize="20" Margin="10 6 0 0" Width="30" VerticalAlignment="Center" HorizontalAlignment="Left"/>
                        <TextBlock Text="{Binding Name}" Foreground="#cfced1" FontSize="20" Margin="10 6 0 0" VerticalAlignment="Center" HorizontalAlignment="Left"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</UserControl>
```

答:
You should add the trigger(s) to the ItemTemplate, e.g.:

```<code><DataTemplate>
    <StackPanel ...>
        <TextBlock x:Name="tb1" ... />
        <TextBlock x:Name="tb2" ... />
    </StackPanel>
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType=ListBoxItem}}" Value="True">
            <Setter TargetName="tb1" Property="Foreground" Value="Blue" />
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>
</code>```

A ListBoxItem style cannot set properties of some individual TextBlock or any other control that is defined in the ItemTemplate.

Body:
I have a listbox with a template, inside the listboxitem I have 2 textblock.

My goal is to change the foreground of those 2 textblock when the listboxitem is:

Hovered(Mouse over)

Selected

My ItemTemplate currently removes the highlight when u hover over items, that works as expected.

I know I can get the IsSelected and IsMouseOver events, for example:

<Trigger Property="IsSelected" Value="true">
    <Setter Property="Background" TargetName="Bd" Value="White"/>

</Trigger>
<Trigger Property="IsMouseOver" Value="true">

</Trigger>

But I could not figure out how to modify the TextBlock inside, I've tried using acestor and a whole different ways none worked(as in they had no effect).

Here is what my View looks like:

<UserControl x:Class="Shex.Views.SideBarView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:local="clr-namespace:Shex.Views"
             xmlns:s="https://github.com/canton7/Stylet"
             xmlns:shex="clr-namespace:Shex"
             mc:Ignorable="d"
             d:DesignHeight="800" d:DesignWidth="260"
             Background="#403f42" Padding="0" BorderThickness="0" Margin="0">
    <UserControl.Resources>

    </UserControl.Resources>
    <Grid Margin="0">
        <ListBox ItemsSource="{Binding MenuItems}" SelectionMode="Single" SelectedItem="{Binding SelectedMenuItem}" SelectionChanged="{s:Action ChangeView}"
                 BorderThickness="0" Padding="0" Margin="0 10 0 0" Background="#403f42" ItemContainerStyle="{DynamicResource MenuContainerStyle}" SnapsToDevicePixels="true">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Height="60" Orientation="Horizontal" SnapsToDevicePixels="true">
                        <TextBlock Text="{Binding Image}" FontFamily="/Shex;component/Fonts/Font Awesome 5 Free-Solid-900.otf#Font Awesome 5 Free Solid" Foreground="#cfced1" FontSize="20" Margin="10 6 0 0" Width="30" VerticalAlignment="Center" HorizontalAlignment="Left"/>
                        <TextBlock Text="{Binding Name}" Foreground="#cfced1" FontSize="20" Margin="10 6 0 0" VerticalAlignment="Center" HorizontalAlignment="Left"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</UserControl>

Body:
You should add the trigger(s) to the ItemTemplate, e.g.:

<DataTemplate>
    <StackPanel ...>
        <TextBlock x:Name="tb1" ... />
        <TextBlock x:Name="tb2" ... />
    </StackPanel>
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType=ListBoxItem}}" Value="True">
            <Setter TargetName="tb1" Property="Foreground" Value="Blue" />
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>

A ListBoxItem style cannot set properties of some individual TextBlock or any other control that is defined in the ItemTemplate.


问:
Error: Ternary Operator not work correctly in "cout" object
I'm making a C++ program that input a two-digits number, then print screen method to read that number by letter.
The problem that I'm facing is ternary operator. When I execute code below, output is 1 when input is 11, output is 0 when input is 12. I only post a paragraph of my program. I was shortcut it.
My code snippet :</p>

```<code>switch(tens_position_value)
{
   case 1:
   {
        if (unit_position_value == 1|| unit_position_value==2)
        {
            cout << (unit_position_value == 1) ? "Eleven" : "Twelve";
        }
   }
}
</code>```

答:
I am not sure about what you want to obtain, but I am supposing that if tens_position_value = 1 and unit_position_value = 1, you want to print "Eleven", while if unit_position_value = 2, you want to print "Twelve":

```<code>#include <iostream>
#include <string>

int main()
{
    int tens_position_value = 1;
    int unit_position_value = 1;
    switch(tens_position_value)
    {
        case 1:
        {
                if (unit_position_value == 1|| unit_position_value==2)
                {
                    std::string result = (unit_position_value == 1) ? "Eleven" : "Twelve";
                    std::cout << result << std::endl;
                }
        }
    }
    std::cout << "Bye ^_^\n";
}
</code>```

In this case the output is "Eleven", if you change the value of unit_position_value to 2, you obtain "Twelve"

Body:
I'm making a C++ program that input a two-digits number, then print screen method to read that number by letter.
The problem that I'm facing is ternary operator. When I execute code below, output is 1 when input is 11, output is 0 when input is 12. I only post a paragraph of my program. I was shortcut it.
My code snippet :

switch(tens_position_value)
{
   case 1:
   {
        if (unit_position_value == 1|| unit_position_value==2)
        {
            cout << (unit_position_value == 1) ? "Eleven" : "Twelve";
        }
   }
}

Body:
I am not sure about what you want to obtain, but I am supposing that if tens_position_value = 1 and unit_position_value = 1, you want to print "Eleven", while if unit_position_value = 2, you want to print "Twelve":

#include <iostream>
#include <string>

int main()
{
    int tens_position_value = 1;
    int unit_position_value = 1;
    switch(tens_position_value)
    {
        case 1:
        {
                if (unit_position_value == 1|| unit_position_value==2)
                {
                    std::string result = (unit_position_value == 1) ? "Eleven" : "Twelve";
                    std::cout << result << std::endl;
                }
        }
    }
    std::cout << "Bye ^_^\n";
}

In this case the output is "Eleven", if you change the value of unit_position_value to 2, you obtain "Twelve"