Split()なしでPythonで文字列を分割する -- python フィールド と string フィールド と split フィールド 関連 問題

Splitting strings in Python without split()












0
vote

問題

日本語

split()メソッドを使用せずに文字列を分割する他の方法は何ですか?たとえば、Split()メソッドを使用せずに['この'、 '、' a '、'文 ']に分割できますか?

英語

What are other ways to split a string without using the split() method? For example, how could ['This is a Sentence'] be split into ['This', 'is', 'a', 'Sentence'] without the use of the split() method?

</div
        
 
 

回答リスト

4
 
vote
vote
ベストアンサー
 
<事前> <コード> EXISTS2
 
sentence = 'This is a sentence' split_value = [] tmp = '' for c in sentence:     if c == ' ':         split_value.append(tmp)         tmp = ''     else:         tmp += c if tmp:     split_value.append(tmp) 
</div
 
 
 
 
2
 
vote

あなたが望むなら正規表現を使うことができます:

<事前> <コード> EXISTS3

EXISTS4 は、空白ではない任意の文字と、 99887776615 は、1つ以上の文字を1行に見つけることを述べています。 <コード> EXISTS6 は、そのパターンに一致するすべての文字列の 998877617 を作成します。

しかし、実際には、<コード> EXISTS8 はそれをするための最良の方法です。

 

You can use regular expressions if you want:

>>> import re >>> s = 'This is a Sentence' >>> re.findall(r'S+', s) ['This', 'is', 'a', 'Sentence'] 

The S represents any character that isn't whitespace, and the + says to find one or more of those characters in a row. re.findall will create a list of all strings that match that pattern.

But, really, s.split() is the best way to do it.

</div
 
 
0
 
vote

再帰版、詳細を詳細に分割する:

<事前> <コード> EXISTS9

または、短い、1行の形状:

<事前> <コード> FOUND0
 

A recursive version, breaking out the steps in detail:

def my_split(s, sep=' '):     s = s.lstrip(sep)     if sep in s:         pos = s.index(sep)         found = s[:pos]         remainder = my_split(s[pos+1:])         remainder.insert(0, found)         return remainder     else:         return [s]  print my_split("This is a sentence") 

Or, the short, one-line form:

def my_split(s, sep=' '):     return [s[:s.index(sep)]] + my_split(s[s.index(sep)+1:]) if sep in s else [s] 
</div
 
 
0
 
vote

文字列のリストから始めて、これらの文字列を分割したい場合は、希望の出力が何であるかに応じて行う方法がいくつかあります。

ケース1:文字列のリスト( old_list )の1つの文字列のリスト( new_list )に分割されます。

たとえば ['This is a Sentence', 'Also a sentence'] - &gt。 <コード> ['This', 'is', 'a', 'Sentence', 'Also', 'a', 'sentence'] 。

ステップ:

  1. 文字列を介してループします。 <コード> for sentence in old_list:
  2. 現在の単語を追跡するための新しい文字列を作成します( word )。
  3. これらの文字列のそれぞれの文字を介してループします。 <コード> for ch in sentence:
  4. 分割したい文字に遭遇したら(この例のスペース)、 9988777667 が空ではないことを確認し、それを新しいリストに追加し、それ以外の場合は文字を追加してください。 <コード> word 。
  5. すべての文字をループしてから word を必ずリストに追加してください。
  6. 最終コード:

    <事前> <コード> new_list0

    これは

    と同じです <事前> <コード> new_list1

    またはさらに単純な

    <事前> <コード> new_list2

    ケース2:文字列のリスト( 998877613 )は、strings のリストのリストのリスト( 998876614 )に分割されます。

    例えば new_list5 - &gt。 <コード> for ch in sentence:16 。

    ステップ:

    1. 文字列を介してループします。 <コード> new_list7
    2. 現在の単語を追跡するための新しい文字列を作成する(<コード> new_list8 )およびこの文字列の単語を追跡するための新しいリスト( new_list9 < /コード>)。
    3. これらの文字列のそれぞれの文字を介してループします。 <コード> ['This is a Sentence', 'Also a sentence']0
    4. あなたが分割したい文字に遭遇したら(この例のスペース)、 99887776621 が空ではなく、 ['This is a Sentence', 'Also a sentence']2 に追加してください。それ以外の場合、 ['This is a Sentence', 'Also a sentence']3 に文字を追加します。
    5. すべての文字を介してループして ['This is a Sentence', 'Also a sentence']4 ['This is a Sentence', 'Also a sentence']5 に追加してください。
    6. < ['This is a Sentence', 'Also a sentence']7 )<コード> ['This is a Sentence', 'Also a sentence']8 を新しいリストに移動し、次の文字列に移動します。

      最終コード:

      <事前> <コード> ['This is a Sentence', 'Also a sentence']9

      これは

      と同じです <事前> <コード> ['This', 'is', 'a', 'Sentence', 'Also', 'a', 'sentence']0

      またはリストの総合的な使用

      <事前> <コード> ['This', 'is', 'a', 'Sentence', 'Also', 'a', 'sentence']1
 

Starting with a list of strings, if you would like to split these strings there are a couple ways to do so depending on what your desired output is.

Case 1: One list of strings (old_list) split into one new list of strings (new_list).

For example ['This is a Sentence', 'Also a sentence'] -> ['This', 'is', 'a', 'Sentence', 'Also', 'a', 'sentence'].

Steps:

  1. Loop through the strings. for sentence in old_list:
  2. Create a new string to keep track of the current word (word).
  3. Loop through the characters in each of these strings. for ch in sentence:
  4. If you come across the character(s) you want to split on (spaces in this example), check that word is not empty and add it to the new list, otherwise add the character to word.
  5. Make sure to add word to the list after looping through all the characters.

The final code:

new_list = [] for sentence in old_list:     word = ''     for ch in sentence:         if ch == ' ' and word != '':             new_list.append(word)             word = ''         else:             word += ch     if word != '':         new_list.append(word) 

This is equivalent to

new_list = [] for sentence in old_list:     new_list.extend(sentence.split(' ')) 

or even simpler

new_list =  ' '.join(old_list).split(' ') 

Case 2: One list of strings (old_list) split into a new list of lists of strings (new_list).

For example ['This is a Sentence', 'Also a sentence'] -> [['This', 'is', 'a', 'Sentence'], ['Also', 'a', 'sentence']].

Steps:

  1. Loop through the strings. for sentence in old_list:
  2. Create a new string to keep track of the current word (word) and a new list to keep track of the words in this string (sentence_list).
  3. Loop through the characters in each of these strings. for ch in sentence:
  4. If you come across the character(s) you want to split on (spaces in this example), check that word is not empty and add it to sentence_list, otherwise add the character to word.
  5. Make sure to add word to sentence_list after looping through all the characters.
  6. Append (not extend) sentence_list to the new list and move onto the next string.

The final code:

new_list = [] for sentence in old_list:     sentence_list = []     word = ''     for ch in sentence:         if ch == ' ' and word != '':             sentence_list.append(word)             word = ''         else:             word += ch     if word != '':         sentence_list.append(word)     new_list.append(sentence_list) 

This is equivalent to

new_list = [] for sentence in old_list:     new_list.append(sentence.split(' ')) 

or using list comprehensions

new_list =  [sentence.split(' ') for sentence in old_list] 
</div
 
 
 
 
0
 
vote

文字列値からchar値を分割する簡単なコードです。 i.e

入力:udddududu

<事前> <コード> ['This', 'is', 'a', 'Sentence', 'Also', 'a', 'sentence']2

出力:['u'、 'd'、 'd'、 'd'、 'u'、 'd'、 'u'、 'd'、 'u'

 

This is simple code to split a char value from a string value; i.e

INPUT : UDDDUDUDU

s = [str(i) for i in input().strip()] print(s) 

OUTPUT: ['U','D','D','D','U','D','U','D','U']

</div
 
 
 
 
0
 
vote
<事前> <コード> ['This', 'is', 'a', 'Sentence', 'Also', 'a', 'sentence']3
 
sentence = 'This is a sentence' word="" for w in sentence :     if w.isalpha():         word=word+w      elif not w.isalpha():       print(word)       word="" print(word) 
</div
 
 
0
 
vote
 <コード> ['This', 'is', 'a', 'Sentence', 'Also', 'a', 'sentence']4  

出力: ------&gt; ['Bella'、 'C​​iao'、 'Amigos']

<事前> <コード> ['This', 'is', 'a', 'Sentence', 'Also', 'a', 'sentence']5

出力: ------&gt; [「アミゴス」、「Ciao」、 'Bella']

 
string1 = 'bella ciao amigos' split_list = [] tmp = '' for s in string1:    if s == ' ':        split_list.append(tmp)        tmp = ''    else:        tmp += s if tmp:    split_list.append(tmp)  print(split_list) 

Output: ------> ['bella', 'ciao', 'amigos']

reverse_list = split_list[::-1] print(reverse_list) 

Output: ------> ['amigos', 'ciao', 'bella']

</div
 
 
0
 
vote
<事前> <コード> ['This', 'is', 'a', 'Sentence', 'Also', 'a', 'sentence']6
 
def mysplit(strng):     strng = strng.lstrip()      strng = strng.rstrip()     lst=[]     temp=''     for i in strng:         if i == ' ':             lst.append(temp)             temp = ''         else:             temp += i     if temp:         lst.append(temp)     return lst       print(mysplit("Hello World")) print(mysplit("   ")) print(mysplit(" abc ")) print(mysplit("")) 
</div
 
 

関連する質問

18  2つ以上のタブを1つの分割ウィンドウに組み合わせるためのVIM / GVIMにコマンドがありますか?  ( Is there a command in vim gvim to combine two or more tabs into a single split w ) 
gvimの別々のタブで開かれている2つのファイルを取ることは可能ですか、それらを分割/ vsplitウィンドウで1つのタブに組み合わせることはできますか?どのタブに参加するかを指定する方法があった場合がありますが、タブボールの反対側のものでさえ、十分に良いで...

0  子データの子に基づいて分割されたXSLT  ( Xslt split based on child of child data ) 
私は持っています: <事前> <コード> <?xml version="1.0" encoding="utf-8"?> <parent> <parentspecialinfo>blond</parentspecialinfo> <child> <...

501  Item Xにアクセスできるように文字列を分割するにはどうすればいいですか?  ( How do i split a string so i can access item x ) 
SQL Serverを使用して、文字列を分割する方法X? 文字列 "Hello John Smith"を取ります。文字列をスペースで分割し、「John」を返すべきアイテムにアクセスする方法を説明できますか? ...

-2  Ruby Rorはハッシュを分割します  ( Ruby ror split a hash ) 
私はこのようなハッシュを持っています: <事前> <コード> hash = {"user:**xy@xy.com** password:**azerty**"=>1, "user:**yy@yy.com** password:**qwerty*...

0  異なるデータ型を2Dアレイに分離するには.split関数を使用しますか?  ( How would i use the split function to separate different data types into 2d arr ) 
私はこのようないくつかの行を持つ.txtファイルを持っています: <コード> Robot 1923 human M 12M Star Gaze, 73, 1543, B, Joseph Smith <コード> Sanction 1932 indigo ...

8  分割の始めと終わりの空の文字列[重複]  ( Empty strings at the beginning and end of split ) 
この質問はすでにここで答えを持っています 閉じる 8年前>。 可能な重複: Ruby Rubyでは、文字列の先頭に一致する区切り文字で文字列を分割すると、配列の初期位置に空の文字列が表示されます。 <事前> <コード> ...

26  PerlでCSVファイルを効率的に解析する方法  ( How do i efficiently parse a csv file in perl ) 
Perlで大きなCSVフォーマット済みファイルを解析するプロジェクトに取り組んで、物事をより効率的にすることを探しています。 マイアプローチは、最初に split() を1行ずつ、次に split() 各行でフィールドを取得します。しかし、データを少なく...

2  Microsoft Wordテーブルセルの最大分割長さを取得する方法  ( How to get max split length of microsoft word table cell ) 
vstoを使ってワードプロセッサを自動化しています。 C#、Word 2003 Addin の背後にあるコード フォントサイズを11に保つと、単語テーブルセルを11行に分割することができます。 しかし、フォントサイズを増やすと、25行に分割できます。 それに...

1  Sybase SQL Anywhereを使用したSplit / Explode Comma区切り文字列[重複]  ( Split explode comma delimited string with sybase sql anywhere ) 
この質問はすでにここで回答を持っています アクセスできるように文字列を分割する方法アイテムx? (43回答) ...

-1  CSVファイルからポリラインを入手できますか?  ( How can i get polylines from csv file ) 
CSVファイル(Java)の値を分割したい。私のデータの例; 行1:T1、B、1408039037、[ - 8.585712,41.148639]、[ - 8.585685,41.148855]] ... 列2:T22、A、1408039009、[...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有