Взять строки, разделить и затем соединить с помощью Python - PullRequest
0 голосов
/ 27 мая 2020

Пытаюсь взять список пригородов и переформатировать их. У меня сейчас проблемы с разделением списка и получением правильного формата.

dataframe = pd.read_csv('x.csv')
suburbs = list(dataframe.x)
#suburbs



x = []
for n in x:
    y = n.split()
    x =[]
    for n in y:
        if (n not in dont_want):
            x.append(n)

    x.append(x)

x

Выполнение следующего скрипта заканчивается ошибкой.

x
separator = ','
print(separator.join(x))

это ошибка

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-182-345db222de4e> in <module>
      1 suburb_clean
      2 separator = ','
----> 3 print(separator.join(suburb_clean))

TypeError: sequence item 0: expected str instance, list found

Это своего рода лог c, за которым я собирался следовать

# .join() with lists
numList = ['1', '2', '3', '4']
separator = ', '
print(separator.join(numList))

# .join() with tuples
numTuple = ('1', '2', '3', '4')
print(separator.join(numTuple))

s1 = 'abc'
s2 = '123'

# each element of s2 is separated by s1
# '1'+ 'abc'+ '2'+ 'abc'+ '3'
print('s1.join(s2):', s1.join(s2))

# each element of s1 is separated by s2
# 'a'+ '123'+ 'b'+ '123'+ 'b'
print('s2.join(s1):', s2.join(s1))

Я хочу получить список пригородов для каждого штата без пробелов между имена, но вместо% 20. Я понимаю, что иметь пригороды под каждым штатом может быть очень сложно, поэтому просто правильно отформатированные пригороды в целом - это мой первый результат, которого я хотел бы.

* 1014 и хотел бы получить совет

1 Ответ

1 голос
/ 27 мая 2020

Вы собираете детали в список x и помещаете x в suburb_clean, а затем пытаетесь присоединиться к suburb_clean, который содержит x, который является списком. str.join(iterable) хочет итерацию строк: это ваша ошибка.

Фиксированный код:

suburbs = ["want this", "want this (meh)", "this as well (nope)"]

suburb_clean = []

dont_want = frozenset( ["(meh)", "(nope)"] )

for urb in suburbs:
    cleaned_name = []
    name_parts = urb.split()

    for part in name_parts:
        if part in dont_want:
            continue
        cleaned_name.append(part)

    suburb_clean.append(' '.join(cleaned_name))

print(suburbs)      #  ['want this', 'want this (meh)', 'this as well (nope)']
print(suburb_clean) #  ['want this', 'want this', 'this as well']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...